2014-06-11 92 views
1

我在主窗口中有一個簡單的qt應用程序QTabWidget。我也有幾個QPushButton(s)和QRadioButton(s)。如何通過窗口大小來擴展小部件?

我想要的是,當我手動調整窗口大小或通過最大化/最小化它應該以相同的方式調整容器大小。
換句話說,我想要的是相當於在qt中的DockStyle.Fill C++

我該怎麼做?

回答

0

你需要考慮如何在你的應用程序

http://qt-project.org/doc/qt-4.8/layout.html

使用的佈局作爲一個快速和簡單的第一次嘗試,在設計,你可以在主窗口中單擊鼠標右鍵,然後選擇「佈局「從下拉菜單中選擇。例如,在這裏你可以選擇網格佈局。

6

在Qt,你必須使用Layouts

Qt的佈局系統提供的自動排列窗口小部件內子部件,以確保 他們很好地利用了可用空間的一種簡單而有效的方式。

總之,在佈局中的所有組件將被搬遷到窗口之後,新的地方,到佈局所屬調整大小。


如果您正在使用deisgner:

1.點擊小部件的空的空間來選擇自己(或主窗口中,我只使用基本小部件這裏演示),以及佈局選項將在突出顯示:

enter image description here

2.選擇所需的佈局

這裏是對象監視器看起來像一個後用於:

enter image description here

如果你的部件不使用佈局,它看起來就像這樣:

enter image description here

我們在這裏所做的是使基礎部件/主窗口裝備主佈局。你可以看到,按鈕會自動校準,當調整窗口小部件,這些部件將搬遷根據佈局:

enter image description here

或許你會覺得這惱人的拓展空間,所以下一步的行動是爲佈局添加一個Spacer;所以當佈局調整大小時,只有間隔件會伸展。 (另一種選擇是讓你的小部件可擴展性,看**在這篇文章的末尾)

enter image description here

3.此外,你可以添加一個佈局到另一個創建嵌套佈局

例如,首先我選擇A和B(通過按Ctrl)並使用QVBoxLayout。這個額外的佈局不是基礎佈局,因此用紅色矩形突出顯示。

enter image description here

然後我選擇C,且含有& B中的佈局,並使用它們QHBoxLayoutenter image description here

最後,我用另一個QVBoxLayout因爲我在基礎部件主要佈局,就像我們以前做過什麼。

enter image description here

和對象顯示器:

enter image description here


如果你喜歡打鍵盤,並且手工製作的代碼的特殊感覺:

對於最後一個例子:

QWidget *Form = new QWidget; 
QPushButton *pushButton_A = new QPushButton("A"); 
QPushButton *pushButton_B = new QPushButton("B"); 
QPushButton *pushButton_C = new QPushButton("C"); 

QVBoxLayout *verticalLayout = new QVBoxLayout; 
QHBoxLayout *horizontalLayout = new QHBoxLayout; 
QVBoxLayout *mainLayout = new QVBoxLayout; 

verticalLayout->addWidget(pushButton_A); 
verticalLayout->addWidget(pushButton_B); 
horizontalLayout->addWidget(pushButton_C); 
horizontalLayout->addLayout(verticalLayout); 
mainLayout->addLayout(horizontalLayout); 

Form->setLayout(mainLayout); 
Form->show(); 

在你的情況

這裏是佈局的例子:

enter image description here

注意QMainWidget具有centralwidget作爲基礎構件。此外,QTabWidget的每個選項卡都有其自己的基本小部件(圖中爲選項卡tab_2),其採用另一基本佈局​​。


*不要忘了在佈局中添加Spacer只要你喜歡塑造他們。

**您可以在每個部件(QTabWidgetQPushButton等)上設置size policy,使其水平/垂直可展開或固定,這與佈局策略配合使用。例如,在非常開始例如,如果我們設定

  • 按鈕A到垂直固定的,水平地擴大
  • 按鈕B被垂直擴大,水平方向擴大
  • 按鈕C被垂直擴大,水平地固定

它看起來像這樣調整時:

enter image description here

+0

我認爲你在**附錄 – MultiVAC

+0

@MultiVACOops的解釋中略微「水平」和「垂直」切換,感謝您的更正。 – Tay2510

相關問題