我有以下 Qt 代码:
QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(); // will be set later dynamically
box->addWidget (label);
标签中的文字将在稍后设置。 问题是,当标签调整大小时,它会调整 QVBoxLayout 的大小,并调整其他相邻小部件的大小。 我不想使标签或布局固定宽度。因为我希望它们能够随着整个窗口调整大小。
是否可以告诉小部件占据布局中的所有位置,但不能占据更多位置?
您是否尝试过修改小部件的大小政策?你可以用这个完成你想要的事情。
以下是所有尺寸政策:http://qt.nokia.com/doc/4.6/qsizepolicy.html#Policy-enum
您可以设置 maximumSize 或查看 sizePolicy。
我认为您需要为要放置布局的主窗口设置拉伸因子(setStrechFactor)。
也许你可以看看以下方法:
- void setScaledContents(bool)
- void setWordWrap(bool on)
希望它符合您的要求!
如果您希望标签始终填充一行空间,如果文本只有一行,那么解决方案就是:
QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(" "); // The space will create a vertical space in the layout
box->addWidget (label);
“空”标签现在的行为与设置文本后完全相同。