Qt中可调整大小的布局/帧,由用户按每个小部件

时间:2017-01-08 02:41:24

标签: c++ qt qt5 qlayout

我经常使用QGridLayout,并且要求我不知道如何使用这种布局来实现。

我的问题:想象一下,左边和右边有两个普通的小部件(来自QWidget)(类似于QHBoxLayoutQGridLayout),我希望用户可以将它们分开移动。这可能吗?

更多信息: 举个例子,想象一下默认的Windows注册表编辑器。左边的部分有键和路径,右边有要编辑的值。

我想强调一点,我并不是要求探索者的观点。我基本上是一个右边的情节小部件,左边是一个QTableView小部件,我希望用户能够方便地用他的鼠标进行缩放,哪个小部件应该横向更大。

是否存在可通过鼠标扩展的某种布局?

请询问您需要的更多信息。

谢谢!

1 个答案:

答案 0 :(得分:3)

我认为你应该使用QSplitter

根据文件:

  

分割器允许用户通过拖动来控制子窗口小部件的大小   孩子们之间的界限。任何数量的小部件都可能是   由一个分离器控制。

例如,使用Qt Creator,如果我们有两个QGridLayout且每个QPushButton,我们可以同时选择QGridLayout并使用Lay Out Horizontally in Splitter选项。< / p>

enter image description here

之后,我们可以移动它们之间的边界来控制子窗口小部件的大小:

enter image description here

我做了一个例子。这里有ui文件的代码:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>435</width>
    <height>105</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QSplitter" name="splitter">
   <property name="geometry">
    <rect>
     <x>9</x>
     <y>10</y>
     <width>411</width>
     <height>71</height>
    </rect>
   </property>
   <property name="orientation">
    <enum>Qt::Horizontal</enum>
   </property>
   <widget class="QWidget" name="gridLayoutWidget">
    <layout class="QGridLayout" name="gridLayout">
     <item row="0" column="0">
      <widget class="QPushButton" name="pushButton">
       <property name="text">
        <string>PushButton</string>
       </property>
      </widget>
     </item>
    </layout>
   </widget>
   <widget class="QWidget" name="gridLayoutWidget_2">
    <layout class="QGridLayout" name="gridLayout_2">
     <item row="0" column="0">
      <widget class="QPushButton" name="pushButton_2">
       <property name="text">
        <string>PushButton</string>
       </property>
      </widget>
     </item>
    </layout>
   </widget>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>