簡體   English   中英

Qt 中可調整大小的布局/框架,由用戶根據小部件

[英]Resizable layouts/frames in Qt, per widget by the user

我經常使用QGridLayout ,並且有一個要求我不知道如何或是否可以使用這種布局來實現。

我的問題:想象一下,我在左側和右側(在QHBoxLayoutQGridLayout類的東西上)有兩個普通小部件(從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM