私が使用
setFixedSize(size());
したのは、ウィンドウのサイズ変更を停止することですが、マウスがウィンドウの境界線上にあるときにサイズ変更矢印が引き続き表示されます。
境界を越えるときに矢印が表示されないように、ウィンドウのサイズ変更を無効にするより良い方法はありますか?
私が使用
setFixedSize(size());
したのは、ウィンドウのサイズ変更を停止することですが、マウスがウィンドウの境界線上にあるときにサイズ変更矢印が引き続き表示されます。
境界を越えるときに矢印が表示されないように、ウィンドウのサイズ変更を無効にするより良い方法はありますか?
次のようなことを試してください:
this->statusBar()->setSizeGripEnabled(false);
これが機能しない場合は、QSizeGripをアクティブにしているウィジェットを検出するだけです。これを行うには、アプリにイベント フィルターをインストールし、QSizeGrip の mouseMoveEvent をキャッチしてみてください。次に、その親ウィジェットをデバッグします。
使用できる eventFilter 関数の例を次に示します。
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::MouseMove)
{
QSizeGrip *sg = qobject_cast<QSizeGrip*>(obj);
if(sg)
qDebug() << sg->parentWidget();
}
return false;
}
あなたはおそらくそのショーイベントをキャッチすることもできます.それはあなた次第です.
使用する
setMinimumSize (QSize(width_px,height_px))
setMaximumSize (QSize(width_px,height_px))
両方のメソッドのサイズは同じです。サイズ変更カーソルが表示されず、ウィンドウがサイズ変更/最大化されません。
手動で指定せずに UI フォーム自体から幅と高さの値を取得する場合は、プロジェクト クラス内に次のコマンドを追加できます。
this->setFixedSize(this->width(), this->height());
次のようにして、幅と高さ (必要な場合) に個別のパラメーターを設定することもできます。
this->setFixedWidth(this->width());
this->setFixedHeight(this->height());
また、次のようなこともできます:
this->setFixedWidth(int);
this->setFixedHeight(int);
矢も消えた。
Qt Creatorを使用する場合は、ウィンドウの同じとを、 、およびで指定してみてください。Width
Height
properties
geometry
minimumSize
maximumSize
Qt5で次のコードを使用できます
this->setMinimumSize(sz);
this->setMaximumSize(sz);
sz は QSize オブジェクトです。
サイズは外観までわからず、システム設定 (100%、125%、150%) によっても異なる可能性があるため、次のようなことを試すことができます (サイズ変更カーソルも非表示になります)。
void QWidget::showEvent(QShowEvent *event)
{
// disable vertical resize
int height = this->height();
if (height != minimumHeight() || height != maximumHeight()) {
setMinimumHeight(height);
setMaximumHeight(height);
}
}
Windows 10 で実際に機能した唯一の解決策は、WinAPI を使用することです。
#ifdef Q_OS_WIN
#include <windows.h>
...
SetWindowLong((HWND) window->winId(), GWL_STYLE, GetWindowLong((HWND) window->winId(), GWL_STYLE)&~WS_SIZEBOX);
#endif