我可以制作一个QMainWindow,网格布局只能水平调整,而不能垂直调整吗?
我希望它的垂直尺寸是保持所有按钮/线条编辑所需的最小尺寸。
答案 0 :(得分:6)
是的,你可以。由于QMainWindow继承自QWidget,因此使用QWidget size policy设置仅允许在水平方向上调整大小。
如果在Qt Designer中工作,请将垂直尺寸策略设置为固定,将最小高度设置为所需高度。 在代码中:
QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
使用绝对固定大小时要小心,因为控件可能仍需要垂直增长(例如,用户在其桌面上设置了高DPI字体)。
答案 1 :(得分:2)
我在一本名为“使用Qt 4进行C ++ GUI编程”的书中的一个例子中看到了另一种方法。他们用
做到了 setFixedHeight(sizeHint().height());
答案 2 :(得分:1)
下面的代码工作正常
setFixedHeight(sizeHint().height());
但下面的代码
QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
不起作用,因为错误的参数传递给函数setSizePolicy
。此函数有两种形式,其中一种需要QSizePolicy::Policy
,另一种需要QSizePolicy
,但QSizePolicy::Expanding
既不是QSizePolicy
也不是QSizePolicy::Policy
。