色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          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://cafeforensic.com/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ì)話(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.圖形設(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)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉