首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要最小空间的QLayout

需要最小空间的QLayout
EN

Stack Overflow用户
提问于 2015-11-09 14:48:50
回答 1查看 1.9K关注 0票数 2

我在wich中有一个QVBoxLayout,我在运行时动态添加其他QWidget:

代码语言:javascript
复制
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设置为最小?

附带问题:如何向该小部件添加垂直滚动条?

编辑:-添加一个空格项使其更糟:

也不能解决我的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 15:19:43

快速回答

在插入代码之前,将以下一行

代码语言:javascript
复制
ui->verticalLayout->parentWidget()->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Maximum);

*还可以在QtDesigner中找到这个属性,确保您选择的是布局,而不是QDockWidget。

解释

布局没有大小,只有小部件。布局在其他小部件中,因此您需要更改布局的父小部件的大小。setSizePolicy更改小部件的大小行为。该方法有两个参数:水平策略和垂直策略。您可以保持水平,因为Preferred是默认的nad,将垂直策略更改为Maximum,这意味着小部件的首选策略是最大大小。

侧问题: QScrollArea为您提供滚动小部件的功能。您可以将您的QLayout封装在QWidget中,然后封装在QScrollArea中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33611725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档