53

私が使用 setFixedSize(size()); したのは、ウィンドウのサイズ変更を停止することですが、マウスがウィンドウの境界線上にあるときにサイズ変更矢印が引き続き表示されます。

境界を越えるときに矢印が表示されないように、ウィンドウのサイズ変更を無効にするより良い方法はありますか?

4

15 に答える 15

19

次のようなことを試してください:

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;
}

あなたはおそらくそのショーイベントをキャッチすることもできます.それはあなた次第です.

于 2013-05-22T07:13:03.887 に答える
5

使用する

setMinimumSize (QSize(width_px,height_px))

setMaximumSize (QSize(width_px,height_px))

両方のメソッドのサイズは同じです。サイズ変更カーソルが表示されず、ウィンドウがサイズ変更/最大化されません。

于 2016-08-17T05:42:10.867 に答える
5

手動で指定せずに UI フォーム自体から幅と高さの値を取得する場合は、プロジェクト クラス内に次のコマンドを追加できます。

this->setFixedSize(this->width(), this->height());

次のようにして、幅と高さ (必要な場合) に個別のパラメーターを設定することもできます。

this->setFixedWidth(this->width());
this->setFixedHeight(this->height());
于 2017-03-05T03:49:25.247 に答える
3

また、次のようなこともできます:

this->setFixedWidth(int);
this->setFixedHeight(int);

矢も消えた。

于 2016-08-05T08:31:21.310 に答える
3

Qt Creatorを使用する場合は、ウィンドウの同じとを、 、およびで指定しててください。WidthHeightpropertiesgeometryminimumSizemaximumSize

于 2013-05-26T12:30:32.730 に答える
3

Qt5で次のコードを使用できます

this->setMinimumSize(sz);
this->setMaximumSize(sz);

sz は QSize オブジェクトです。

于 2016-08-04T13:36:34.343 に答える
0

サイズは外観までわからず、システム設定 (100%、125%、150%) によっても異なる可能性があるため、次のようなことを試すことができます (サイズ変更カーソルも非表示になります)。

void QWidget::showEvent(QShowEvent *event)
{
    // disable vertical resize
    int height = this->height();
    if (height != minimumHeight() || height != maximumHeight()) {
        setMinimumHeight(height);
        setMaximumHeight(height);
    }
}
于 2018-11-22T21:03:31.517 に答える
0

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
于 2018-10-16T12:40:29.323 に答える