Qt布局问题

问题描述 投票:0回答:5

我有以下 Qt 代码:

QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(); // will be set later dynamically
box->addWidget (label);

标签中的文字将在稍后设置。 问题是,当标签调整大小时,它会调整 QVBoxLayout 的大小,并调整其他相邻小部件的大小。 我不想使标签或布局固定宽度。因为我希望它们能够随着整个窗口调整大小。

是否可以告诉小部件占据布局中的所有位置,但不能占据更多位置?

c++ qt layout
5个回答
1
投票

您是否尝试过修改小部件的大小政策?你可以用这个完成你想要的事情。

以下是所有尺寸政策:http://qt.nokia.com/doc/4.6/qsizepolicy.html#Policy-enum


0
投票

您可以设置 maximumSize 或查看 sizePolicy


0
投票

我认为您需要为要放置布局的主窗口设置拉伸因子(setStrechFactor)。


0
投票

也许你可以看看以下方法:

- void setScaledContents(bool)
- void setWordWrap(bool on)

希望它符合您的要求!


0
投票

如果您希望标签始终填充一行空间,如果文本只有一行,那么解决方案就是:

QVBoxLayout* box = new QVBoxLayout;  
label = new QLabel(" "); // The space will create a vertical space in the layout  
box->addWidget (label);

“空”标签现在的行为与设置文本后完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.