翻譯|使用教程|編輯:龔雪|2022-04-28 10:00:32.637|閱讀 237 次
概述:本文主要為大家介紹Qt 布局系統中的布局管理功能,歡迎大家下載相關組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt布局系統提供了一種簡單而強大的方式來自動排列小部件內的子小部件,以確保它們充分利用可用空間。
Qt技術交流群:166830288 歡迎一起進群討論
為您的小部件提供良好布局的最簡單方法是使用內置布局管理器:QHBoxLayout、QVBoxLayout、QGridLayout 和 QFormLayout。 這些類繼承自QLayout,而QLayout又派生自QObject(不是 QWidget),它們負責一組小部件的幾何管理。要創建更復雜的布局,您可以將布局管理器相互嵌套。
QHBoxLayout 在水平行中從左到右(對于從右到左的語言,或從右到左)布置小部件。
QVBoxLayout 在垂直列中從上到下布置小部件。
QGridLayout 在二維網格中布置小部件,小部件可以占據多個單元格。
QFormLayout 以2列描述性標簽字段樣式布置小部件。
在代碼中布局小部件
下面的代碼創建了一個 QHBoxLayout 來管理五個 QPushButton 的幾何形狀,如上面的第一個屏幕截圖所示:
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new QPushButton("Two"); QPushButton *button3 = new QPushButton("Three"); QPushButton *button4 = new QPushButton("Four"); QPushButton *button5 = new QPushButton("Five"); QHBoxLayout *layout = new QHBoxLayout(window); layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(button3); layout->addWidget(button4); layout->addWidget(button5); window->show();
QVBoxLayout 的代碼是相同的,除了創建布局的那一行。QGridLayout 的代碼有點不同,因為我們需要指定子部件的行列位置:
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new QPushButton("Two"); QPushButton *button3 = new QPushButton("Three"); QPushButton *button4 = new QPushButton("Four"); QPushButton *button5 = new QPushButton("Five"); QGridLayout *layout = new QGridLayout(window); layout->addWidget(button1, 0, 0); layout->addWidget(button2, 0, 1); layout->addWidget(button3, 1, 0, 1, 2); layout->addWidget(button4, 2, 0); layout->addWidget(button5, 2, 1); window->show();
第三個 QPushButton 跨越2列,這可以通過將2指定為QGridLayout::addWidget()的第五個參數來實現。
QFormLayout 將在一行中添加兩個小部件,通常是一個QLabel和一個QLineEdit來創建表單,在同一行添加QLabel和QLineEdit會將QLineEdit設置為QLabel的好友。下面的代碼將使用 QFormLayout 將三個 QPushButtons 和一個相應的 QLineEdit 放在一行上。
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QLineEdit *lineEdit1 = new QLineEdit(); QPushButton *button2 = new QPushButton("Two"); QLineEdit *lineEdit2 = new QLineEdit(); QPushButton *button3 = new QPushButton("Three"); QLineEdit *lineEdit3 = new QLineEdit(); QFormLayout *layout = new QFormLayout(window); layout->addRow(button1, lineEdit1); layout->addRow(button2, lineEdit2); layout->addRow(button3, lineEdit3); window->show();
使用布局的提示
使用布局時,在構造子小部件時不需要傳遞父級。 布局將自動重新設置小部件的父級(使用 QWidget::setParent()),以便它們安裝了布局的小部件的子級。
注意:布局中的小部件是安裝了布局的小部件的子級,而不是布局本身的子級。 小部件只能有其他小部件作為父級,而不是布局。
您可以在布局上使用 addLayout() 嵌套布局; 然后內部布局成為它插入的布局的子級。
Qt技術交流群:166830288 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網