使QMainWindow只能水平调整大小 - 也就是说,宽度可调整大小,但高度是固定的

时间:2011-06-29 18:37:53

标签: c++ qt layout resize qmainwindow

我可以制作一个QMainWindow,网格布局只能水平调整,而不能垂直调整吗?

我希望它的垂直尺寸是保持所有按钮/线条编辑所需的最小尺寸。

3 个答案:

答案 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