Ral*_*kum 3 qscrollarea qt5 qlayout qvboxlayout
我有一个 QVBoxLayout,其中我在运行时动态添加其他 QWidget :
for(int i = 0; i < value; i++)
{
QList<QWidget*> widgetList_i;
//... widgetList_i.append(a lot of widgets)
ui->verticalLayout->addWidget(widget_i);
}
Run Code Online (Sandbox Code Playgroud)
这些添加的小部件之间有很多浪费的空间:
当我运行应用程序时,我可以用鼠标压缩高度。
使用限制每个widgetList_i小部件的高度setMaximumheigth()是一个很好的方法,但是我在开头和结尾浪费了空间:
仅添加 aui->vertivalLayout->addStretch(1);会导致末尾出现空白。该布局的开头很好:
添加 QSpacerItem 会使情况变得更糟:
是否有一个函数可以将添加的小部件的布局高度设置为最小值?
快速回答
在插入代码之前,添加以下行:
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);
Run Code Online (Sandbox Code Playgroud)
另外,您可以在 Qt Designer 中找到此属性,请确保您选择的是布局而不是 QDockWidget。
解释
布局没有尺寸,只有小部件。布局位于其他小部件内部,因此您需要更改布局的父小部件的大小。 setSizePolicy 更改小部件的大小行为。该方法有 2 个参数:水平策略和垂直策略。您可以将水平策略保留为Preferred,这是默认值,并将垂直策略更改为Maximum,这意味着小部件的首选策略是最大尺寸。
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |