[英]Resizable layouts/frames in Qt, per widget by the user
我經常使用QGridLayout
,並且有一個要求我不知道如何或是否可以使用這種布局來實現。
我的問題:想象一下,我在左側和右側(在QHBoxLayout
或QGridLayout
類的東西上)有兩個普通小部件(從QWidget
派生),我希望用戶可以移動分隔它們的線。 那可能嗎?
更多信息:舉個例子,想象一下默認的 Windows 注冊表編輯器。 左邊是鍵和路徑,右邊是要編輯的值。
我想強調的是,我並不是在要求探索者的觀點。 我基本上是右側的繪圖小部件和左側的QTableView
小部件,我希望用戶能夠方便地用鼠標縮放,哪個小部件應該水平更大。
是否有某種可以通過鼠標縮放的布局?
請詢問您需要它的更多信息。
我認為您應該使用QSplitter 。
根據文檔:
拆分器允許用戶通過拖動子控件之間的邊界來控制子控件的大小。 任何數量的小部件都可以由單個拆分器控制。
例如,使用 Qt Creator,如果我們有兩個QGridLayout
,每個都有一個QPushButton
,我們可以同時選擇QGridLayout
並使用拆分Lay Out Horizontally in Splitter
選項。
之后,我們可以移動它們之間的邊界來控制子部件的大小:
我做了一個例子。 這里有 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.