Al *_*l C 3 python layout qt qt-designer
我有一个对话框,左侧有一个 ListWidget,右侧有一个 VBoxLayout 内的各种小部件(包括 TextEdit 和 LineEdit)。ListWidget 和 VBox 之间有一个分隔符。这是 UI 代码(减去一些属性定义):
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>701</width>
<height>586</height>
</rect>
</property>
<widget class="QSplitter" name="splitter">
<property name="geometry">
<rect>
<x>10</x>
<y>12</y>
<width>681</width>
<height>561</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListWidget" name="keysListWidget">
</widget>
<widget class="QWidget" name="">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="deleteButton">
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="saveNewButton">
<property name="text">
<string>Save New</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="saveChangesButton">
<property name="text">
<string>Update</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLineEdit" name="keyLineEdit">
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="valueTextEdit">
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>
Run Code Online (Sandbox Code Playgroud)
如果用户将对话框向右拉伸,我希望 VBox 保持锚定在对话框的右侧(而 ListWidget 的大小保持不变)。如果用户向下拉伸对话框,我希望 ListWidget 和 VBox 都保持锚定在对话框的顶部和底部,即,我希望它们都拉伸。
现在,向右或向下拉伸对话框对小部件大小没有影响。
您需要向顶部小部件添加布局。您需要右键单击最外面的小部件(对话框),选择“布局”并选择适当的布局(网格布局就可以)。这将确保 Dialog 的直接子级对其大小更改做出反应。
为了防止水平拉伸 ListWidget,您可以设置其最大宽度(Designer 中的 maximumSize 属性)。