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