新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Qt圖形編程基礎之:Qt/Embedded開發入門

        Qt圖形編程基礎之:Qt/Embedded開發入門

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257103.htm

        (1)內建布局管理器

        Qt提供了3種用于布局管理的類:QHBoxLayout、QVBox-
        Layout和QGridLayout。

        n QHBoxLayout布局管理把窗體按照水平方向從左至右排成一行。

        n QVBoxLayout布局管理把窗體按照垂直方向從上至下排成一列。

        n QGridLayout布局管理以網格的方式來排列窗體,一個窗體可以占據多個網格。

        它們的示例如圖12.12所示。

        在多數情況下,Qt的布局管理器為其管理的部件挑選一個最適合的尺寸以便窗口能夠平滑地縮放。如果其缺省值不合適,開發者可以使用以下機制微調布局:

        n 設置一個最小尺寸、一個最大尺寸,或者為一些子部件設置固定的大小。

        圖12.123種布局管理類示意圖

        n 設置一些延伸項目或間隔項目,延伸或間隔項目會填充空余的布局空間。

        n 改變子部件的尺寸策略。通過調用QWidget::setSizePolicy(),程序員可以仔細調整子部件的縮放行為。子部件可以設置為擴展、收縮、保持原大小等狀態。

        n 改變子部件的建議大小。QWidget::sizeHint()和QWidget::minimumSizeHint()會根據內容返回部件的首選尺寸和最小首選尺寸。內建部件提供了合適的重新實現。

        n 設置延伸因子。延伸因子規定了子部件的相應增量,比如,2/3的可用空間分配給部件A而1/3分配給B。

        (2)布局嵌套。

        布局可以嵌套任意層。圖12.13顯示了一個對話框的兩種大小。

        圖12.13一個對話框的兩種大小

        這個對話框使用了3種布局:一個QVBoxLayout組合了按鈕,一個QHBoxLayout組合了國家列表和那組按鈕,一個QVBoxLayout組合了“Selectacountry”標簽和剩下的部件。一個延伸項目用來維護Cancel和Help按鈕間的距離。

        下面的代碼創建了對話框部件和布局:

        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,開發者可以定義自己的布局管理器。和Qt一起提供的customlayout樣例展示了3個自定義布局管理器:BorderLayout、CardLayout和SimpleFlow,程序員可以使用并修改它們。

        Qt還包括QSplitter,是一個最終用戶可以操縱的分離器。某些情況下,QSplitter可能比布局管理器更為可取。

        為了完全控制,重新實現每個子部件的QWidget::resizeEvent()并調用QWidget::setGeometry(),就可以在一個部件中手動地實現布局。

        2.圖形設計器

        Qt圖形設計器是一個具有可視化用戶接口的設計工具。Qt的應用程序可以完全用源代碼來編寫,或者使用Qt圖形設計器來加速開發工作。啟動Qt圖形設計器的方法是:

        cdqt-2.3.2/bin

        ./designer

        這樣就可以啟動一個圖形化的設計界面,如圖12.14所示。

        圖12.14Qt圖形設計器界面

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 称多县| 勐海县| 志丹县| 深泽县| 高雄市| 夏津县| 武义县| 北流市| 班玛县| 明水县| 涟源市| 天柱县| 和政县| 吴旗县| 新营市| 大港区| 阿瓦提县| 长海县| 屏东市| 波密县| 墨竹工卡县| 阜城县| 云林县| 德阳市| 连云港市| 遵化市| 九龙城区| 连平县| 股票| 咸阳市| 常熟市| 陕西省| 正镶白旗| 华亭县| 南靖县| 曲松县| 容城县| 松阳县| 平顶山市| 益阳市| 崇信县|