我可以制作一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?
我希望它的垂直大小是保持所有按钮/行编辑所需的最小值。
我可以制作一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?
我希望它的垂直大小是保持所有按钮/行编辑所需的最小值。
是的你可以。作为 QMainWindow 继承自 QWidget,使用 QWidget大小策略设置仅允许在水平方向调整大小。
如果在 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
。这个函数有两种形式,一种是 requires QSizePolicy::Policy
,另一种是 requiresQSizePolicy
但QSizePolicy::Expanding
既不是 aQSizePolicy
也不是 a QSizePolicy::Policy
。