QLayout 至少需要 space
QLayout with minimum space required
我有一个 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);
}
这些添加的小部件之间有很多浪费 space:
当我运行应用程序时,我可以用鼠标压缩高度。
通过 setMaximumheigth() 限制每个 widgetList_i 小部件的高度是一个不错的方法,但是我在开始和结束时浪费了 spaces:
仅添加 ui->vertivalLayout->addStretch(1);
会导致末尾为空 space。该布局的开头很好:
主要问题:是否有一个函数可以将添加的小部件的布局高度设置为最小值?
附带问题:如何向该小部件添加垂直滚动条?
编辑:
- 添加 spaceritem 使情况变得更糟: 并没有解决我的问题
快答
在你的插入代码之前放这行
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);
*您也可以在 QtDesigner 中找到此属性,请确保您选择的是 Layout 而不是 QDockWidget。
说明
布局没有尺寸,只有小部件。布局位于其他小部件内,因此您需要更改布局的父小部件的大小。 setSizePolicy
更改小部件的大小行为。此方法有 2 个参数:水平策略和垂直策略。您可以将水平设置为默认设置 Preferred
,并将垂直策略更改为 Maximum
,这意味着小部件的首选策略是最大尺寸。
附带问题:
QScrollArea
为您提供小部件的滚动功能。
您可以将 QLayout
包装在 QWidget
中,然后再包装在 QScrollArea
.
中
我有一个 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);
}
这些添加的小部件之间有很多浪费 space:
当我运行应用程序时,我可以用鼠标压缩高度。
通过 setMaximumheigth() 限制每个 widgetList_i 小部件的高度是一个不错的方法,但是我在开始和结束时浪费了 spaces:
仅添加 ui->vertivalLayout->addStretch(1);
会导致末尾为空 space。该布局的开头很好:
主要问题:是否有一个函数可以将添加的小部件的布局高度设置为最小值?
附带问题:如何向该小部件添加垂直滚动条?
编辑:
- 添加 spaceritem 使情况变得更糟:
快答
在你的插入代码之前放这行
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);
*您也可以在 QtDesigner 中找到此属性,请确保您选择的是 Layout 而不是 QDockWidget。
说明
布局没有尺寸,只有小部件。布局位于其他小部件内,因此您需要更改布局的父小部件的大小。 setSizePolicy
更改小部件的大小行为。此方法有 2 个参数:水平策略和垂直策略。您可以将水平设置为默认设置 Preferred
,并将垂直策略更改为 Maximum
,这意味着小部件的首选策略是最大尺寸。
附带问题:
QScrollArea
为您提供小部件的滚动功能。
您可以将 QLayout
包装在 QWidget
中,然后再包装在 QScrollArea
.