翻譯|使用教程|編輯:龔雪|2022-04-28 10:00:32.637|閱讀 237 次
概述:本文主要為大家介紹Qt 布局系統(tǒng)中的布局管理功能,歡迎大家下載相關(guān)組件體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Qt布局系統(tǒng)提供了一種簡(jiǎn)單而強(qiáng)大的方式來自動(dòng)排列小部件內(nèi)的子小部件,以確保它們充分利用可用空間。
Qt技術(shù)交流群:166830288 歡迎一起進(jìn)群討論
為您的小部件提供良好布局的最簡(jiǎn)單方法是使用內(nèi)置布局管理器:QHBoxLayout、QVBoxLayout、QGridLayout 和 QFormLayout。 這些類繼承自QLayout,而QLayout又派生自QObject(不是 QWidget),它們負(fù)責(zé)一組小部件的幾何管理。要?jiǎng)?chuàng)建更復(fù)雜的布局,您可以將布局管理器相互嵌套。
QHBoxLayout 在水平行中從左到右(對(duì)于從右到左的語言,或從右到左)布置小部件。
QVBoxLayout 在垂直列中從上到下布置小部件。
QGridLayout 在二維網(wǎng)格中布置小部件,小部件可以占據(jù)多個(gè)單元格。
QFormLayout 以2列描述性標(biāo)簽字段樣式布置小部件。
在代碼中布局小部件
下面的代碼創(chuàng)建了一個(gè) QHBoxLayout 來管理五個(gè) QPushButton 的幾何形狀,如上面的第一個(gè)屏幕截圖所示:
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 的代碼是相同的,除了創(chuàng)建布局的那一行。QGridLayout 的代碼有點(diǎn)不同,因?yàn)槲覀冃枰付ㄗ硬?件的行列位置:
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();
第三個(gè) QPushButton 跨越2列,這可以通過將2指定為QGridLayout::addWidget()的第五個(gè)參數(shù)來實(shí)現(xiàn)。
QFormLayout 將在一行中添加兩個(gè)小部件,通常是一個(gè)QLabel和一個(gè)QLineEdit來創(chuàng)建表單,在同一行添加QLabel和QLineEdit會(huì)將QLineEdit設(shè)置為QLabel的好友。下面的代碼將使用 QFormLayout 將三個(gè) QPushButtons 和一個(gè)相應(yīng)的 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();
使用布局的提示
使用布局時(shí),在構(gòu)造子小部件時(shí)不需要傳遞父級(jí)。 布局將自動(dòng)重新設(shè)置小部件的父級(jí)(使用 QWidget::setParent()),以便它們安裝了布局的小部件的子級(jí)。
注意:布局中的小部件是安裝了布局的小部件的子級(jí),而不是布局本身的子級(jí)。 小部件只能有其他小部件作為父級(jí),而不是布局。
您可以在布局上使用 addLayout() 嵌套布局; 然后內(nèi)部布局成為它插入的布局的子級(jí)。
Qt技術(shù)交流群:166830288 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)