【发布时间】:2017-06-09 16:53:12
【问题描述】:
我想实现以下布局行为:
| A | B | | A | |
1) |---- -----| 2) |---- D |
| C | D | | C | |
将 A、B、C、D 相互对齐,如果 B 被隐藏,则允许 D 占用可用空间。
我可以通过多种方式实现布局行为 1 或 2。但是如果不从布局中删除小部件并稍后在 B 使用 qt 默认布局隐藏/显示时重新添加,我似乎无法找到满足这两个条件的解决方案。
到目前为止我试过了:
1) 网格布局 - 当 B 被隐藏时,D 保持原位。如果我将开始跟踪小部件 B 的隐藏显示状态,可以像我想要的那样对齐。
2) hbox 和 vbox 布局的组合 - D 将获得所有空间,在 B 被隐藏后,但当 B 显示时 - A 和 B 永远不会对齐。再一次,我需要重新排列所有小部件以实现我想要的行为。
我认为网格布局最适合我的目的,但是当我添加小部件时,行跨度是固定不变的。
有没有我想念的简单解决方案?
【问题讨论】:
-
QGridLayout+QWidget::setSizePolicy()肯定能够解决这个(相当普通的)用例。如果您希望有人在这里指出您的问题,您应该显示您的代码:minimal reproducible example。