我是qt的新人,现在我的窗口看起来像这样:
*---------* *---------* *---------* *---------*
|ListView1| |ListView2| |ListView3| |ListView4|
| | | | | | | |
*---------* *---------* *---------* *---------*
*---------------------------------------------*
| |
| ListView5 |
| |
*---------------------------------------------*
*---------------------------------------------*
| GridLayout2 |
| |
*---------------------------------------------*
问题是第二行(ListView5)高于第一行和第三行,而我希望第一行高于第三行,第三行应高于第二行。有办法吗?或者我应该使用gridlayout的其他东西吗?感谢。
答案 0 :(得分:6)
我建议您阅读文档here,以获取有关在将小部件添加到布局后如何为小部件分配大小的信息:
- 所有小部件最初将按照
QWidget::sizePolicy()
和QWidget::sizeHint()
分配一定数量的空间Expanding
。- 如果任何小部件设置了拉伸因子,且值大于零,则按比例分配空间 他们的伸展因子。
- 如果任何小部件的拉伸系数设置为零,则只有在没有其他小部件需要空间时才会获得更多空间。这些, space首先分配给具有stretch factors大小策略的小部件。
- 分配的空间小于其最小大小的小部件(如果未指定最小大小,则分配最小大小提示) 他们需要的最小尺寸。 (小部件不必具有最小值 尺寸或最小尺寸提示,在这种情况下拉伸系数是他们的 决定因素。)
- 分配了比最大大小更多空间的任何小部件都会分配它们所需的最大大小空间。 (小工具没有 必须有一个最大尺寸,在这种情况下伸展因子是他们的 决定因素。)
醇>
假设您没有更改sizePolicy
的{{1}},那么它们都具有QListView
的默认sizePolicy
。这意味着,您只需为Expanding
中的行设置合适的。
如果您使用的是Qt设计器,只需点击QGridLayout
(或具有QGridLayout
的窗口小部件),然后在属性编辑器中将QGridLayout
设置为{{{{ 1}}。
layoutRowStretch
将第三行设置为填充第二行占用的空白空间高度的两倍,而第一行将填充第二行占用的空白空间高度的三倍。 / p>
如果你想在没有设计师的情况下这样做,你可以使用{{3}},如下所示:
3,1,2