使 QMainWindow 仅水平可调整大小 - 即宽度可调整大小,但高度是固定的

发布于 2024-11-17 18:44:17 字数 88 浏览 3 评论 0原文

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

我希望它的垂直尺寸是容纳所有按钮/行编辑所需的最小值。

Can I make a QMainWindow with a grid layout resize only horizontally but not vertically?

I want its vertical size to be the minimum needed to hold all the buttons/line edits.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不奢求什么 2024-11-24 18:44:17

是的,你可以。由于 QMainWindow 继承自 QWidget,因此请使用 QWidget 大小策略 设置只允许在水平方向调整大小。

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

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

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

Yes you can. As a QMainWindow inherits from QWidget, use the QWidget size policy settings to only allow resizing in the horizontal direction.

If working in Qt Designer, set the vertical size policy to be fixed, and the minimum height to be your desired height.
In code:

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

Be cautious using absolute fixed size as the controls might need to still grow vertically (e.g. the user sets a high DPI font on their desktop).

不顾 2024-11-24 18:44:17

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

    setFixedHeight(sizeHint().height());

I saw another way in one of the examples in a book called "C++ GUI Programming with Qt 4". They did it with

    setFixedHeight(sizeHint().height());
一身软味 2024-11-24 18:44:17

下面的代码工作正常,

setFixedHeight(sizeHint().height());

但下面的代码

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

不起作用,因为错误的参数传递给了函数 setSizePolicy。该函数有两种形式,一种需要 QSizePolicy::Policy,另一种需要 QSizePolicy,但 QSizePolicy::Expanding 都不是 QSizePolicy::Expanding code>QSizePolicy 也不是 QSizePolicy::Policy

code below works fine

setFixedHeight(sizeHint().height());

but code below

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

doesn't work because wrong parameter is passed to the function setSizePolicy. This function has two forms, one of which requires QSizePolicy::Policy and the other one requires QSizePolicy but QSizePolicy::Expanding is neither a QSizePolicy nor a QSizePolicy::Policy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文