Qt圖形編程基礎(chǔ)之:Qt/Embedded開(kāi)發(fā)入門(mén)
(1)內(nèi)建布局管理器
Qt提供了3種用于布局管理的類(lèi):QHBoxLayout、QVBox-
Layout和QGridLayout。
n QHBoxLayout布局管理把窗體按照水平方向從左至右排成一行。
n QVBoxLayout布局管理把窗體按照垂直方向從上至下排成一列。
n QGridLayout布局管理以網(wǎng)格的方式來(lái)排列窗體,一個(gè)窗體可以占據(jù)多個(gè)網(wǎng)格。
它們的示例如圖12.12所示。
在多數(shù)情況下,Qt的布局管理器為其管理的部件挑選一個(gè)最適合的尺寸以便窗口能夠平滑地縮放。如果其缺省值不合適,開(kāi)發(fā)者可以使用以下機(jī)制微調(diào)布局:
n 設(shè)置一個(gè)最小尺寸、一個(gè)最大尺寸,或者為一些子部件設(shè)置固定的大小。
圖12.123種布局管理類(lèi)示意圖
n 設(shè)置一些延伸項(xiàng)目或間隔項(xiàng)目,延伸或間隔項(xiàng)目會(huì)填充空余的布局空間。
n 改變子部件的尺寸策略。通過(guò)調(diào)用QWidget::setSizePolicy(),程序員可以仔細(xì)調(diào)整子部件的縮放行為。子部件可以設(shè)置為擴(kuò)展、收縮、保持原大小等狀態(tài)。
n 改變子部件的建議大小。QWidget::sizeHint()和QWidget::minimumSizeHint()會(huì)根據(jù)內(nèi)容返回部件的首選尺寸和最小首選尺寸。內(nèi)建部件提供了合適的重新實(shí)現(xiàn)。
n 設(shè)置延伸因子。延伸因子規(guī)定了子部件的相應(yīng)增量,比如,2/3的可用空間分配給部件A而1/3分配給B。
(2)布局嵌套。
布局可以嵌套任意層。圖12.13顯示了一個(gè)對(duì)話(huà)框的兩種大小。
圖12.13一個(gè)對(duì)話(huà)框的兩種大小
這個(gè)對(duì)話(huà)框使用了3種布局:一個(gè)QVBoxLayout組合了按鈕,一個(gè)QHBoxLayout組合了國(guó)家列表和那組按鈕,一個(gè)QVBoxLayout組合了“Selectacountry”標(biāo)簽和剩下的部件。一個(gè)延伸項(xiàng)目用來(lái)維護(hù)Cancel和Help按鈕間的距離。
下面的代碼創(chuàng)建了對(duì)話(huà)框部件和布局:
QVBoxLayout*buttonBox=newQVBoxLayout(6);
buttonBox->addWidget(newQPushButton(OK,this));
buttonBox->addWidget(newQPushButton(Cancel,this));
buttonBox->addStretch(1);
buttonBox->addWidget(newQPushButton(Help,this));
QListBox*countryList=newQListBox(this);
countryList->insertItem(Canada);
/*...*/
countryList->insertItem(UnitedStatesofAmerica);
QHBoxLayout*middleBox=newQHBoxLayout(11);
middleBox->addWidget(countyList);
middleBox->addLayout(buttonBox);
QVBoxLayout*topLevelBox=newQVBoxLayout(this,6,11);
topLevelBox->addWidget(newQLabel(Selectacountry,this));
topLevelBox->addLayout(middleBox);
可以看到,Qt讓布局變得非常容易。
(3)自定義布局。
通過(guò)子類(lèi)化QLayout,開(kāi)發(fā)者可以定義自己的布局管理器。和Qt一起提供的customlayout樣例展示了3個(gè)自定義布局管理器:BorderLayout、CardLayout和SimpleFlow,程序員可以使用并修改它們。
Qt還包括QSplitter,是一個(gè)最終用戶(hù)可以操縱的分離器。某些情況下,QSplitter可能比布局管理器更為可取。
為了完全控制,重新實(shí)現(xiàn)每個(gè)子部件的QWidget::resizeEvent()并調(diào)用QWidget::setGeometry(),就可以在一個(gè)部件中手動(dòng)地實(shí)現(xiàn)布局。
2.Qt/Embedded圖形設(shè)計(jì)器
Qt圖形設(shè)計(jì)器是一個(gè)具有可視化用戶(hù)接口的設(shè)計(jì)工具。Qt的應(yīng)用程序可以完全用源代碼來(lái)編寫(xiě),或者使用Qt圖形設(shè)計(jì)器來(lái)加速開(kāi)發(fā)工作。啟動(dòng)Qt圖形設(shè)計(jì)器的方法是:
cdqt-2.3.2/bin
./designer
這樣就可以啟動(dòng)一個(gè)圖形化的設(shè)計(jì)界面,如圖12.14所示。
圖12.14Qt圖形設(shè)計(jì)器界面
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評(píng)論