2012-03-10 174 views
14

我在使用拖放方式在Qt中創建視圖時遇到大小問題。使用Qt設計器Qt分割器佈局調整行爲

讓我開始用圖像幫我解釋一下

enter image description here

這是我的形式主窗口。

會發生什麼事是:

我們有4級選項卡的小部件。左側標籤小部件在2箇中間小部件上具有水平分離器。 2中間部件有一個垂直分離器,左側和右側有一個水平分離器。

右側小部件的左側有一個垂直分離器。

所以所有的視圖都使用分離器連接。

最後,mainform以可調整大小的方式使用水平佈局將所有內容粘在一起。

問題是,最左邊和最右邊的小部件的寬度是固定的(在設計器中)。 我希望它們的寬度更小。類似的東西來:

enter image description here

你可以看到小部件被調整。我能夠運行應用程序並手動調整分離器。 QtDesigner有沒有辦法做到這一點?我試着玩政策。但是,我沒有真正進一步瞭解。這是否表明我對政策缺乏認識?也許佈局一般?

我應該使用什麼選項來實現使用QtDesigner所需的佈局。我想避免使用代碼。

希望我能儘快解決這個問題。它必須俯瞰簡單的東西。

+0

我使用分離器的第一次,我沒有看到任何東西,使設計人員我配置分配器的位置。我試圖通過對話框的構造函數中的代碼嘗試設置它(可能嘗試將分離器一側的組件重新調整到最小),但還沒有到達那裏。我很想聽聽其他人有什麼要說的。 – aldo 2012-03-10 21:23:20

+0

很高興ehar im不是唯一一個有此問題的人。它應該是如此簡單。但是設置最小寬度等大小約束似乎對我沒有幫助。 – 2012-03-10 21:51:38

+0

尺寸可以使用[QSplitter的setStretchFactor功能](http://doc.qt.nokia.com/4.8-snapshot/qsplitter.html#setStretchFactor)進行設置。但正如您已經注意到的那樣,它不能在Qt Designer中設置。 – 2012-03-10 22:28:26

回答

9

你可以玩「水平拉伸」和「垂直拉伸」屬性來改變分割的位置。

例如,頂部中心QTabWidget的垂直拉伸和中心QSplitter的水平拉伸爲1,所有其他值都保持爲0,則會得到所需的結果。

當您有多個非零拉伸值時,設計師看不到比例結果(例如:在2和1處的垂直拉伸2箇中心QTabWidget s => 2/3和1/3)但在運行應用程序時似乎正在工作。

PS:您也可以達到同樣的效果與tabbified QDockWidget秒,但碼頭tabbification不可能通過只爲設計師。

+0

我不敢相信這是這麼簡單。我用第一個,中間部件和中間分離器來拉伸1,它工作正常。 – 2012-03-11 06:36:26

+0

謝謝!像魅力一樣工作! – aakashbhowmick 2012-03-23 01:22:34

1

我設置起始位置是:

QList<int> list= ui->splitter->sizes(); 
list.replace(0,this->height()/0.3); 
list.replace(1,this->height()/0.7); 
ui->splitter->setSizes(list); 

,並記住最小尺寸的子控件