我在主窗口中有一個簡單的qt應用程序QTabWidget
。我也有幾個QPushButton
(s)和QRadioButton
(s)。如何通過窗口大小來擴展小部件?
我想要的是,當我手動調整窗口大小或通過最大化/最小化它應該以相同的方式調整容器大小。
換句話說,我想要的是相當於在qt中的DockStyle.Fill
C++
我該怎麼做?
我在主窗口中有一個簡單的qt應用程序QTabWidget
。我也有幾個QPushButton
(s)和QRadioButton
(s)。如何通過窗口大小來擴展小部件?
我想要的是,當我手動調整窗口大小或通過最大化/最小化它應該以相同的方式調整容器大小。
換句話說,我想要的是相當於在qt中的DockStyle.Fill
C++
我該怎麼做?
你需要考慮如何在你的應用程序
http://qt-project.org/doc/qt-4.8/layout.html
使用的佈局作爲一個快速和簡單的第一次嘗試,在設計,你可以在主窗口中單擊鼠標右鍵,然後選擇「佈局「從下拉菜單中選擇。例如,在這裏你可以選擇網格佈局。
在Qt,你必須使用Layouts:
Qt的佈局系統提供的自動排列窗口小部件內子部件,以確保 他們很好地利用了可用空間的一種簡單而有效的方式。
總之,在佈局中的所有組件將被搬遷到窗口之後,新的地方,到佈局所屬調整大小。
這裏是對象監視器看起來像一個後用於:
如果你的部件不使用佈局,它看起來就像這樣:
我們在這裏所做的是使基礎部件/主窗口裝備主佈局。你可以看到,按鈕會自動校準,當調整窗口小部件,這些部件將搬遷根據佈局:
或許你會覺得這惱人的拓展空間,所以下一步的行動是爲佈局添加一個Spacer;所以當佈局調整大小時,只有間隔件會伸展。 (另一種選擇是讓你的小部件可擴展性,看**在這篇文章的末尾)
例如,首先我選擇A和B(通過按Ctrl)並使用QVBoxLayout
。這個額外的佈局不是基礎佈局,因此用紅色矩形突出顯示。
然後我選擇C,且含有& B中的佈局,並使用它們QHBoxLayout
,
最後,我用另一個QVBoxLayout
因爲我在基礎部件主要佈局,就像我們以前做過什麼。
和對象顯示器:
對於最後一個例子:
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();
這裏是佈局的例子:
注意QMainWidget
具有centralwidget作爲基礎構件。此外,QTabWidget
的每個選項卡都有其自己的基本小部件(圖中爲選項卡和tab_2),其採用另一基本佈局。
*不要忘了在佈局中添加Spacer只要你喜歡塑造他們。
**您可以在每個部件(QTabWidget
,QPushButton
等)上設置size policy,使其水平/垂直可展開或固定,這與佈局策略配合使用。例如,在非常開始例如,如果我們設定
它看起來像這樣調整時:
我認爲你在**附錄 – MultiVAC
@MultiVACOops的解釋中略微「水平」和「垂直」切換,感謝您的更正。 – Tay2510