【问题标题】:How can I anchor widgets in Qt Creator?如何在 Qt Creator 中锚定小部件?
【发布时间】:2015-02-19 00:01:03
【问题描述】:

我有一个对话框,左侧是 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>

如果用户将对话框向右拉伸,我希望 VBox 保持锚定在对话框的右侧(而 ListWidget 的大小保持不变)。如果用户向下拉伸对话框,我希望 ListWidget 和 VBox 都保持锚定在对话框的顶部和底部,即我希望它们都拉伸。

现在,向右或向下拉伸对话框对小部件大小没有影响。

【问题讨论】:

    标签: python qt layout qt-designer


    【解决方案1】:

    您需要将布局添加到顶部小部件。您需要右键单击最外面的小部件(对话框),选择“布局”并选择适当的布局(网格布局就可以了)。这将确保 Dialog 的直接子级对其大小变化做出反应。

    为防止 ListWidget 水平拉伸,您可以设置其最大宽度(Designer 中的 maximumSize 属性)。

    【讨论】:

    • 感谢您的回复。你建议的一切都有帮助。我仍然缺少的唯一部分是在 ListWidget 和(a 中的小部件)VBox 之间添加拆分器。
    • 这就是我最终布置 GUI 的方式... (1) 选择按钮,将它们水平分组。 (2) 选中生成的按钮组,按钮下方的 lineEdit,line 下方的 textEdit,将所有三个垂直分组。 (3) 选中生成的 VBox + ListWidget,用拆分器水平分组。 (4) 取消选择所有内容,将整个表单垂直分组(我一直缺少的关键操作)
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多