【发布时间】:2011-09-25 09:59:44
【问题描述】:
我可以让一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?
我希望它的垂直尺寸是保持所有按钮/行编辑所需的最小值。
【问题讨论】:
标签: c++ qt layout resize qmainwindow
我可以让一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?
我希望它的垂直尺寸是保持所有按钮/行编辑所需的最小值。
【问题讨论】:
标签: c++ qt layout resize qmainwindow
是的,你可以。由于 QMainWindow 继承自 QWidget,因此使用 QWidget size policy 设置只允许在水平方向调整大小。
如果在 Qt Designer 中工作,请将垂直尺寸策略设置为固定,并将最小高度设置为您想要的高度。 在代码中:
QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
谨慎使用绝对固定大小,因为控件可能仍需要垂直增长(例如,用户在桌面上设置了高 DPI 字体)。
【讨论】:
我在名为“C++ GUI Programming with Qt 4”一书中的一个示例中看到了另一种方式。他们做到了
setFixedHeight(sizeHint().height());
【讨论】:
下面的代码可以正常工作
setFixedHeight(sizeHint().height());
但代码如下
QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
不起作用,因为错误的参数被传递给函数setSizePolicy。这个函数有两种形式,一种需要QSizePolicy::Policy,另一种需要QSizePolicy,但QSizePolicy::Expanding既不是QSizePolicy也不是QSizePolicy::Policy。
【讨论】: