新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Qt圖形編程基礎(chǔ)之:Qt/Embedded開(kāi)發(fā)入門(mén)

Qt圖形編程基礎(chǔ)之:Qt/Embedded開(kāi)發(fā)入門(mén)

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/257103.htm

(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ì)話框的兩種大小。

圖12.13一個(gè)對(duì)話框的兩種大小

這個(gè)對(duì)話框使用了3種布局:一個(gè)QVBoxLayout組合了按鈕,一個(gè)QHBoxLayout組合了國(guó)家列表和那組按鈕,一個(gè)QVBoxLayout組合了“Selectacountry”標(biāo)簽和剩下的部件。一個(gè)延伸項(xiàng)目用來(lái)維護(hù)Cancel和Help按鈕間的距離。

下面的代碼創(chuàng)建了對(duì)話框部件和布局:

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è)最終用戶可以操縱的分離器。某些情況下,QSplitter可能比布局管理器更為可取。

為了完全控制,重新實(shí)現(xiàn)每個(gè)子部件的QWidget::resizeEvent()并調(diào)用QWidget::setGeometry(),就可以在一個(gè)部件中手動(dòng)地實(shí)現(xiàn)布局。

2.圖形設(shè)計(jì)器

Qt圖形設(shè)計(jì)器是一個(gè)具有可視化用戶接口的設(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)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關(guān)文章:linux教程




評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉