我经常使用QGridLayout
,并且要求我不知道如何使用这种布局来实现。
我的问题:想象一下,左边和右边有两个普通的小部件(来自QWidget
)(类似于QHBoxLayout
或QGridLayout
),我希望用户可以将它们分开移动。这可能吗?
更多信息: 举个例子,想象一下默认的Windows注册表编辑器。左边的部分有键和路径,右边有要编辑的值。
我想强调一点,我并不是要求探索者的观点。我基本上是一个右边的情节小部件,左边是一个QTableView
小部件,我希望用户能够方便地用他的鼠标进行缩放,哪个小部件应该横向更大。
是否存在可通过鼠标扩展的某种布局?
请询问您需要的更多信息。
谢谢!
答案 0 :(得分:3)
我认为你应该使用QSplitter。
根据文件:
分割器允许用户通过拖动来控制子窗口小部件的大小 孩子们之间的界限。任何数量的小部件都可能是 由一个分离器控制。
例如,使用Qt Creator,如果我们有两个QGridLayout
且每个QPushButton
,我们可以同时选择QGridLayout
并使用Lay Out Horizontally in Splitter
选项。< / p>
之后,我们可以移动它们之间的边界来控制子窗口小部件的大小:
我做了一个例子。这里有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>