4

我可以制作一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?

我希望它的垂直大小是保持所有按钮/行编辑所需的最小值。

4

3 回答 3

6

是的你可以。作为 QMainWindow 继承自 QWidget,使用 QWidget大小策略设置仅允许在水平方向调整大小。

如果在 Qt Designer 中工作,请将垂直尺寸策略设置为固定,并将最小高度设置为您想要的高度。在代码中:

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

请谨慎使用绝对固定大小,因为控件可能仍需要垂直增长(例如,用户在桌面上设置了高 DPI 字体)。

于 2011-06-29T20:27:22.137 回答
2

我在名为“C++ GUI Programming with Qt 4”一书中的一个例子中看到了另一种方式。他们做到了

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

下面的代码工作正常

setFixedHeight(sizeHint().height());

但下面的代码

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

不起作用,因为错误的参数被传递给函数setSizePolicy。这个函数有两种形式,一种是 requires QSizePolicy::Policy,另一种是 requiresQSizePolicyQSizePolicy::Expanding既不是 aQSizePolicy也不是 a QSizePolicy::Policy

于 2014-12-09T17:12:56.387 回答