我在wich中有一个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);
}在添加的小部件之间存在大量浪费空间:

当我运行应用程序时,我可以用鼠标压缩heigth。

使用widgetList_i ()限制每个setMaximumheigth Widget heigth是一种很好的方法,但是在开头和结尾都会浪费空间:

只添加一个ui->vertivalLayout->addStretch(1);将导致最后的空空间。这个布局的开头很好:

主要问题:是否有一个函数将添加的小部件的布局heigth设置为最小?
附带问题:如何向该小部件添加垂直滚动条?
编辑:-添加一个空格项使其更糟:

也不能解决我的问题
发布于 2015-11-09 15:19:43
快速回答
在插入代码之前,将以下一行
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);*还可以在QtDesigner中找到这个属性,确保您选择的是布局,而不是QDockWidget。
解释
布局没有大小,只有小部件。布局在其他小部件中,因此您需要更改布局的父小部件的大小。setSizePolicy更改小部件的大小行为。该方法有两个参数:水平策略和垂直策略。您可以保持水平,因为Preferred是默认的nad,将垂直策略更改为Maximum,这意味着小部件的首选策略是最大大小。
侧问题: QScrollArea为您提供滚动小部件的功能。您可以将您的QLayout封装在QWidget中,然后封装在QScrollArea中。
https://stackoverflow.com/questions/33611725
复制相似问题