布局:如何在垂直布局中使一个小部件成为其余小部件的 3 倍
Posted
技术标签:
【中文标题】布局:如何在垂直布局中使一个小部件成为其余小部件的 3 倍【英文标题】:Layout : How to make one widget 3x the rest in a vertical layout 【发布时间】:2013-08-15 10:02:54 【问题描述】:我有 3 个垂直布局的表(A、B 和 C)。这 3 个的大小策略(水平和垂直)设置为展开。我怎样才能使表 A 的大小是 B 和 C 的 3 倍,并且始终保持该比例。我正在通过 QT Designer 执行此操作。
更新:
为了测试布局拉伸方法。我在垂直布局中添加了四个 QlistWidgets 到具有水平布局的表单中。这是表单的 XML
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>formPracticeClass</class>
<widget class="QMainWindow" name="formPracticeClass">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>847</width>
<height>661</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>formPractice</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,0,0,0">
<item>
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<widget class="QListWidget" name="listWidget_3"/>
</item>
<item>
<widget class="QListWidget" name="listWidget_2"/>
</item>
<item>
<widget class="QListWidget" name="listWidget_4"/>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="formpractice.qrc"/>
</resources>
<connections/>
</ui>
具有 4 个小部件的垂直布局具有 1,0,0,0 的拉伸布局。最上面的小部件的高度对其他人来说看起来更小。我希望最上面的小部件比其他小部件大 2 倍
【问题讨论】:
【参考方案1】:在包含 3 个表格的布局上,在 Qt Designer 中将 layoutStretch
属性设置为 3,1,1
。这指定布局中的第一个元素的空间应该是布局中其他两个元素的 3 倍。
更新:
对于您更新的示例 .ui 文件,您可以通过将 layoutStretch
设置为 2,1,1,1
来使最顶部的小部件比其他小部件大 2 倍:
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="2,1,1,1">
请注意,stretch 属性指定布局的不同元素之间的 比率。换句话说,如果您将layoutStretch
属性中的元素之一设置为0
,您将不会得到想要的结果。
【讨论】:
但是这样 TableA 会增加,而 table b 和 c 保持相同的大小,并且在表格放大时它们不会扩展 @Rajeshwar 你试过了吗?它按预期工作,所有表都扩展了,包括 B 和 C。 是的,我做到了。布局约束设置为默认布局约束。对我来说,似乎 Table 设置为扩展,而 b 和 C 变得固定。 @Rajeshwar 我无法重现您的结果。您是否在表格或布局上设置其他属性? 我在另一个表单上尝试这个。稍后会发布结果,以确保我可能不会更改其他属性以上是关于布局:如何在垂直布局中使一个小部件成为其余小部件的 3 倍的主要内容,如果未能解决你的问题,请参考以下文章