4

QMainWindow のグリッド レイアウトを水平方向のみにサイズ変更し、垂直方向にはサイズ変更できませんか?

すべてのボタン/ライン編集を保持するために必要な最小の垂直サイズにしたい。

4

3 に答える 3

6

Yes you can. As a QMainWindow inherits from QWidget, use the QWidget size policy settings to only allow resizing in the horizontal direction.

If working in Qt Designer, set the vertical size policy to be fixed, and the minimum height to be your desired height. In code:

QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

Be cautious using absolute fixed size as the controls might need to still grow vertically (e.g. the user sets a high DPI font on their desktop).

于 2011-06-29T20:27:22.137 に答える
2

「C++ GUI Programming with Qt 4」という本の例の 1 つで、別の方法を見ました。彼らはそれをやった

    setFixedHeight(sizeHint().height());
于 2012-03-16T08:01:17.667 に答える
1

以下のコードは正常に動作します

setFixedHeight(sizeHint().height());

しかし、以下のコード

QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

関数に間違ったパラメータが渡されたため、機能しませんsetSizePolicy。この関数には 2 つの形式があり、1 つは が必要QSizePolicy::Policyで、もう 1 つは が必要QSizePolicyですQSizePolicy::Expandingが、どちらQSizePolicyでもありませんQSizePolicy::Policy

于 2014-12-09T17:12:56.387 に答える