QGridLayout:更改行的高度

时间:2016-10-01 12:12:56

标签: c++ qt user-interface

我是qt的新人,现在我的窗口看起来像这样:

*---------* *---------* *---------* *---------* 
|ListView1| |ListView2| |ListView3| |ListView4| 
|         | |         | |         | |         |
*---------* *---------* *---------* *---------* 
*---------------------------------------------*
|                                             |
|                  ListView5                  |
|                                             |
*---------------------------------------------*    
*---------------------------------------------*
|                  GridLayout2                |
|                                             |
*---------------------------------------------*

问题是第二行(ListView5)高于第一行和第三行,而我希望第一行高于第三行,第三行应高于第二行。有办法吗?或者我应该使用gridlayout的其他东西吗?感谢。

1 个答案:

答案 0 :(得分:6)

我建议您阅读文档here,以获取有关在将小部件添加到布局后如何为小部件分配大小的信息:

  
      
  1. 所有小部件最初将按照QWidget::sizePolicy()QWidget::sizeHint()分配一定数量的空间   Expanding
  2.   
  3. 如果任何小部件设置了拉伸因子,且值大于零,则按比例分配空间   他们的伸展因子。
  4.   
  5. 如果任何小部件的拉伸系数设置为零,则只有在没有其他小部件需要空间时才会获得更多空间。这些,   space首先分配给具有stretch factors大小策略的小部件。
  6.   
  7. 分配的空间小于其最小大小的小部件(如果未指定最小大小,则分配最小大小提示)   他们需要的最小尺寸。 (小部件不必具有最小值   尺寸或最小尺寸提示,在这种情况下拉伸系数是他们的   决定因素。)
  8.   
  9. 分配了比最大大小更多空间的任何小部件都会分配它们所需的最大大小空间。 (小工具没有   必须有一个最大尺寸,在这种情况下伸展因子是他们的   决定因素。)
  10.   

假设您没有更改sizePolicy的{​​{1}},那么它们都具有QListView的默认sizePolicy。这意味着,您只需为Expanding中的行设置合适的Property Editor screenshot

如果您使用的是Qt设计器,只需点击QGridLayout(或具有QGridLayout的窗口小部件),然后在属性编辑器中将QGridLayout设置为{{{{ 1}}。

setRowStretch

layoutRowStretch将第三行设置为填充第二行占用的空白空间高度的两倍,而第一行将填充第二行占用的空白空间高度的三倍。 / p>

如果你想在没有设计师的情况下这样做,你可以使用{{3}},如下所示:

3,1,2