2011-06-02 27 views
3

我試圖具有以下佈局qtcreator:QTabWidget拒不自動調整大小

QWidget 
    QSplitter 
    QStackedWidget 
     ... 
    QStackedWidget 
     QWidget (page) 
     QTabWidget 

具有sizePolicy每一個控制設置爲Expanding。儘管如此,無論是tab小部件,還是其他任何我放在該頁面小部件上的東西都會被自動化。

我是Qt新手,所以請原諒我,如果這是一個明顯的問題。謝謝。

回答

3

這是一個重複的 How to make a Qt Widget grow with the window size?

我認爲它是重複的,因爲如果你的小部件樹中的每個項目都有佈局,我在Qt 4.7上的測試給出以下輸出,右側是我的對象檢查器。 我只是把小部件放在一邊,並將它們佈置,我沒有改變任何大小的東西來擴大,因爲這是絕對不必要的!

Image with exe and creator screenshot

左邊是正在運行的exe文件,右邊是造物主截圖。 這裏是我的UI:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>MainWindow</class> 
<widget class="QMainWindow" name="MainWindow"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>545</width> 
    <height>441</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>MainWindow</string> 
    </property> 
    <widget class="QWidget" name="centralWidget"> 
    <layout class="QHBoxLayout" name="horizontalLayout"> 
    <item> 
    <widget class="QSplitter" name="splitter"> 
     <property name="orientation"> 
     <enum>Qt::Vertical</enum> 
     </property> 
     <widget class="QStackedWidget" name="stackedWidget"> 
     <property name="currentIndex"> 
     <number>0</number> 
     </property> 
     <widget class="QWidget" name="page_1_1"> 
     <property name="layoutDirection"> 
     <enum>Qt::LeftToRight</enum> 
     </property> 
     <layout class="QGridLayout" name="gridLayout_2"> 
     <item row="0" column="0"> 
      <widget class="QTabWidget" name="tabWidget_1"> 
      <property name="currentIndex"> 
      <number>0</number> 
      </property> 
      <widget class="QWidget" name="tab_3"> 
      <attribute name="title"> 
      <string>Tab 1</string> 
      </attribute> 
      <layout class="QGridLayout" name="gridLayout_4"> 
      <item row="0" column="0"> 
       <widget class="QDateTimeEdit" name="dateTimeEdit_2"/> 
      </item> 
      <item row="1" column="0"> 
       <widget class="QDateTimeEdit" name="dateTimeEdit"/> 
      </item> 
      </layout> 
      </widget> 
      <widget class="QWidget" name="tab_4"> 
      <attribute name="title"> 
      <string>Tab 2</string> 
      </attribute> 
      <layout class="QGridLayout" name="gridLayout_5"> 
      <item row="0" column="0"> 
       <widget class="QCheckBox" name="checkBox_2"> 
       <property name="text"> 
       <string>CheckBox</string> 
       </property> 
       </widget> 
      </item> 
      <item row="1" column="0"> 
       <widget class="QCheckBox" name="checkBox"> 
       <property name="text"> 
       <string>CheckBox</string> 
       </property> 
       </widget> 
      </item> 
      </layout> 
      </widget> 
      </widget> 
     </item> 
     </layout> 
     </widget> 
     </widget> 
     <widget class="QStackedWidget" name="stackedWidget_2"> 
     <widget class="QWidget" name="page_2_1"> 
     <layout class="QGridLayout" name="gridLayout_3"> 
     <item row="0" column="0"> 
      <widget class="QTabWidget" name="tabWidget_2"> 
      <widget class="QWidget" name="tab"> 
      <attribute name="title"> 
      <string>Tab 1</string> 
      </attribute> 
      <layout class="QGridLayout" name="gridLayout"> 
      <item row="0" column="0"> 
       <widget class="QDateEdit" name="dateEdit"/> 
      </item> 
      <item row="1" column="0"> 
       <widget class="QDateEdit" name="dateEdit_2"/> 
      </item> 
      </layout> 
      </widget> 
      <widget class="QWidget" name="tab_2"> 
      <attribute name="title"> 
      <string>Tab 2</string> 
      </attribute> 
      <layout class="QGridLayout" name="gridLayout_6"> 
      <item row="0" column="0"> 
       <widget class="QCheckBox" name="checkBox_4"> 
       <property name="text"> 
       <string>CheckBox</string> 
       </property> 
       </widget> 
      </item> 
      <item row="1" column="0"> 
       <widget class="QCheckBox" name="checkBox_3"> 
       <property name="text"> 
       <string>CheckBox</string> 
       </property> 
       </widget> 
      </item> 
      </layout> 
      </widget> 
      </widget> 
     </item> 
     </layout> 
     </widget> 
     </widget> 
    </widget> 
    </item> 
    </layout> 
    </widget> 
    <widget class="QMenuBar" name="menuBar"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>545</width> 
    <height>22</height> 
    </rect> 
    </property> 
    </widget> 
    <widget class="QToolBar" name="mainToolBar"> 
    <attribute name="toolBarArea"> 
    <enum>TopToolBarArea</enum> 
    </attribute> 
    <attribute name="toolBarBreak"> 
    <bool>false</bool> 
    </attribute> 
    </widget> 
    <widget class="QStatusBar" name="statusBar"/> 
</widget> 
<layoutdefault spacing="6" margin="11"/> 
<resources/> 
<connections/> 
</ui> 
+0

我不這麼認爲。我已經遵循了這些步驟。 – Reinderien 2011-06-03 14:19:27

+0

看起來你的頁面小部件圖標看起來不同於我的可疑。您的網格佈局圖標顯示爲,而我的網頁上顯示爲紅色(/)符號。這是否意味着我的頁面沒有佈局?我將如何將佈局應用於我的頁面? – Reinderien 2011-06-03 20:08:09

+0

畢竟這是問題。我終於想出瞭如何將佈局應用於頁面小部件。 – Reinderien 2011-06-03 20:14:15

1

我在設計器中創建了一個新的頂層窗口(QWidget),並在其上放置了兩個堆疊的小部件,按住Ctrl並單擊它們以選擇它們,然後右鍵單擊它們並選擇「在分離器中水平佈局」。然後,我右鍵單擊頂級QWidget並選擇「網格佈局」。在此之後,兩個堆疊的小部件將擴展以填充可用空間,並且它們會隨着頂層窗口正常增長和縮小。也許你只需要爲頂級小部件設置佈局?

+0

的兩個堆疊的部件有已經在適當擴大。它是堆疊小部件內部的控件(在堆疊頁面內部)不調整大小。 – Reinderien 2011-06-03 12:59:58

+0

感謝您的提示。這個對我有用。 – Juanin 2012-02-08 16:29:48

1

您需要以下層級注意QLayout):

QWidget 
    QSplitter 
    QStackedWidget 
     ... 
    QStackedWidget 
     QWidget (page) 
     QLayout 
      QTabWidget 

因此,代碼是這樣的:

QLayout* MyLayout = new QVBoxLayout (MyPageWidget) ; 
MyLayout -> setSpacing (0) ; 
MyLayout -> setContentsMargins (0, 0, 0, 0) ; 
MyLayout -> addWidget (MyTabWidget) ; 
+0

即使我在選項卡窗口小部件和頁面窗口小部件之間添加布局,它也不起作用。選項卡窗口小部件調整爲其佈局,但佈局不會調整爲頁面大小。 – Reinderien 2011-06-03 14:17:05

+0

@kidneyofnothing:很難相信!你怎麼知道的? – TonyK 2011-06-03 16:36:24