具有单独布局的嵌套 Qt 小部件

Posted

技术标签:

【中文标题】具有单独布局的嵌套 Qt 小部件【英文标题】:Nested Qt Widgets with separate layouts 【发布时间】:2014-08-08 11:17:37 【问题描述】:

我想在不同的小部件/窗口/对话框之间重用 Qt 布局的部分,并让重用的部分尊重***小部件布局的布局间距。

为了重用部件,我目前为我想要重用的部件(每个部件都有自己的布局)创建了从QWidget 派生的单独类。但是,当使用自己的布局嵌套小部件时,嵌套的小部件会获得自己的内容边距并拥有自己的间距。他们不会尊重父小部件布局的间距。

在 Qt 中,nested layouts 是可能的,它在外部提供一个内容边距,并在小部件之间提供相等的间距。所有小部件都具有相同的父级(主小部件/窗口),并且只有布局是嵌套的。间距继承到子布局。

有没有办法在重用部分布局的同时实现这一点,以便嵌套部分尊重父布局的间距?

或者,我是否可以检测小部件何时插入布局并应用父布局的属性而不是使用默认值?

【问题讨论】:

我认为可能有一种方法可以将整个布局从一个小部件中提升出来,这样小部件就只是一个布局的不知情的载体。你不妨试试看。 【参考方案1】:

我猜你在主小部件中做这样的事情:

mainLayout->addWidget(subWidget1)
mainLayout->addWidget(subWidget2)

您是否尝试过这样做:

mainLayout->addLayout(subWidget1->layout())
mainLayout->addLayout(subWidget2->layout())

【讨论】:

这是有道理的,但似乎不起作用:-(。子小部件没有布置甚至显示。

以上是关于具有单独布局的嵌套 Qt 小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 qt 标签(或任何小部件)是不是具有所需的所有空间?

Qt 设计师:嵌套的小部件不是成员吗?

QT 嵌套小部件框模型行为

Qt Designer 使小部件在布局中与另一个小部件重叠

QT5.4 删除和删除布局中的小部件

是啥让 Qt 小部件及其布局正常运行(就其大小而言)?