我有一个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);
}
当我运行应用程序时,我可以用鼠标压缩高度。
通过setMaximumheigth()限制每个widgetList_i小部件高度是一个不错的方法,但是我在开头和结尾都有空格:
仅添加ui->vertivalLayout->addStretch(1);
会导致空白空间。那个布局的开头很好:
主要问题:是否有一个功能可以将添加的小部件的布局设置为最小值?
附带问题:如何向该窗口小部件添加垂直滚动条?
答案 0 :(得分:1)
快速回答
在插入代码之前放入此行
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);
*你也可以在QtDesigner中找到这个属性,确保你选择的是Layout而不是QDockWidget。
<强>解释强>
布局没有尺寸,但是窗口小部件。布局在其他小部件内部,因此您需要更改布局的父小部件的大小。 setSizePolicy
更改窗口小部件的大小行为。此方法有两个参数:水平策略和垂直策略。您可以保持水平为Preferred
,即默认nad将垂直策略更改为Maximum
,这意味着窗口小部件的首选策略是最大大小。
提问:
QScrollArea
为您提供小部件的滚动功能。
您可以将QLayout
打包在QWidget
中,然后打包在QScrollArea
中。