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