淺談 Qt 布局那些事
Qt 布局那些事是本文介紹的內(nèi)容,直接進(jìn)入主題。GridLayout是一個非常強(qiáng)大的布局管理器,它可以實(shí)現(xiàn)很多復(fù)雜的布局,名字中暗示它將所有控件放置在類似網(wǎng)格的布局中.^__^GridLayout有兩個構(gòu)造函數(shù).
先說下GridLayout
GridLayout的意思是按照網(wǎng)格布局,我記得這個在java中的GUI布局也有這個。比較容易理解,就好比一個一個的方格,我們先來看看Qt文檔中給出的定義:
- void QGridLayout::addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )
- void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
***個的布局的參數(shù)的意思依次為:QGridLayoutName,行號,列號。
第二個的布局的參數(shù)的意思依次為:QGridLayoutName,行號,列號,行寬,列寬。
***,要將設(shè)置好的布局添加進(jìn)去,setLayout(yourLayout);
下面是寫的一個簡單的小例子:
- QLabel* nameLabel=new QLabel(tr("Name"));
- QLineEdit* nameLine=new QLineEdit;
- QLabel* addressLabel=new QLabel(tr("Address"));
- QTextEdit* addressText=new QTextEdit;
- //布局采用gridLayout
- QGridLayout* mainlayout=new QGridLayout;
- mainlayout->addWidget(nameLabel,0,0,1,1);
- mainlayout->addWidget(nameLine,0,1,1,3);
- mainlayout->addWidget(addressLabel,1,0,3,1,Qt::AlignTop);
- mainlayout->addWidget(addressText,1,1,3,3);
- setLayout(mainlayout);
關(guān)于addStretch()
- QVBoxLayout* buttonLayout=new QVBoxLayout;
- buttonLayout->addWidget(addButton);
- buttonLayout->addWidget(submitButton);
- buttonLayout->addWidget(cancelButton);
- buttonLayout->addStretch();
上面這一段加不加***一句的效果如下圖:
小結(jié):淺談 Qt 布局那些事的內(nèi)容介紹完了希望本文對你有所幫助!更多內(nèi)容請參考編輯推薦。