可以使用布局(Layout)機(jī)制讓W(xué)idget(QWidget)隨窗口一起縮放和移動(dòng)。
Qt提供以下幾種布局:
-
QHBoxLayout:將QWidget按照水平方向依次排列
-
QVBoxLayout:將QWidget按照垂直方向依次排列
-
QGridLayout:將QWidget按照行列劃分為多個(gè)網(wǎng)格,根據(jù)網(wǎng)格位置排列
-
QFormLayout:將QWidget按照表單樣式排列
使用布局的過程如下:
-
在Qt Designer的左側(cè)對(duì)象列表中選擇一個(gè)QWidget。
-
在右側(cè)Widgets工具箱中選擇一個(gè)布局。
-
雙擊布局,將它添加到QWidget上。
-
您可以在屬性編輯器中進(jìn)一步配置布局。
-
單擊Qt Designer左上角的"窗口"菜單按鈕,選擇布局配置與在mainwindow.ui的寬高比例一致的寬高比例。
-
在QObject的"布局"屬性處設(shè)置您選擇的布局。
-
在構(gòu)造函數(shù)中將widget添加到布局中。
-
在resize事件中重置布局大小。
以下是一個(gè)示例(在主窗口類MainWindow的構(gòu)造函數(shù)中添加):
// 創(chuàng)建垂直布局
QVBoxLayout *layout = new QVBoxLayout();
QWidget *widget = new QWidget(this); // 在MainWindow中創(chuàng)建QWidget
widget->setLayout(layout);
?
// 創(chuàng)建按鈕并添加到布局中
QPushButton *button1 = new QPushButton("Button1");
layout->addWidget(button1, 0, Qt::AlignTop);
?
QPushButton *button2 = new QPushButton("Button2");
layout->addWidget(button2, 0, Qt::AlignTop);
?
// 設(shè)置widget為MainWindow的中心窗口
this->setCentralWidget(widget);
?
// 添加resize事件監(jiān)聽器,當(dāng)窗口縮放時(shí)更新布局大小
connect(this, SIGNAL(resized()), this, SLOT(onResized()));
下面是重置布局尺寸的代碼:
void MainWindow::onResized()
{
QWidget *widget = this->centralWidget();
widget->resize(this->size());
}
這樣,當(dāng)您調(diào)整主窗口的大小時(shí),QWidget和其中的按鈕將跟隨窗口一起縮放和移動(dòng)。
希望這能夠幫助您實(shí)現(xiàn)自適應(yīng)QWidget大小和位置。文章來源:http://www.zghlxwxcb.cn/news/detail-472014.html
本文福利,莬費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(C++語言基礎(chǔ),C++設(shè)計(jì)模式,Qt編程入門,QT信號(hào)與槽機(jī)制,QT界面開發(fā)-圖像繪制,QT網(wǎng)絡(luò),QT數(shù)據(jù)庫編程,QT項(xiàng)目實(shí)戰(zhàn),QSS,OpenCV,Quick模塊,面試題等等)↓↓↓↓↓↓見下面↓↓文章底部點(diǎn)擊莬費(fèi)領(lǐng)取↓↓文章來源地址http://www.zghlxwxcb.cn/news/detail-472014.html
到了這里,關(guān)于在QT的UI界面,讓W(xué)idget可以跟隨窗體大小而改變的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!