新聞中心

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

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

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

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

12.2.5圖形界面編程

Qt提供了所有可能的類和函數(shù)來創(chuàng)建GUI程序。Qt既可用來創(chuàng)建“主窗口”式的程序,即一個有菜單欄,工具欄和狀態(tài)欄作為環(huán)繞的中心區(qū)域;也可以用來創(chuàng)建“對話框”式的程序,使用按鈕和必要的選項卡來呈現(xiàn)選項與信息。Qt支持SDI(單文檔界面)和MDI(多文檔界面)。Qt還支持拖動、放下和剪貼板。工具欄可以在工具欄區(qū)域內(nèi)移動,拖拽到其他區(qū)域或者作為工具托盤浮動起來。這個功能是內(nèi)建的,不需要額外的代碼,但程序員在需要時可以約束工具欄的行為。

使用Qt可以大大簡化編程。例如,如果一個菜單項、一個工具欄按鈕和一個快捷鍵都完成同樣的動作,那么這個動作只需要一份代碼。

Qt還提供消息框和一系列標(biāo)準(zhǔn)對話框,使得程序向用戶提問和讓用戶選擇文件、文件夾、字體以及顏色變得更加簡單。為了呈現(xiàn)一個消息框或一個標(biāo)準(zhǔn)對話框,只需要用一個使用方便的Qt靜態(tài)函數(shù)的一行的語句。

1.主窗口類

QMainWindow類提供了一個典型應(yīng)用程序的主窗口框架。

一個主窗口包含了一組標(biāo)準(zhǔn)窗體的集合。主窗口的頂部包含一個菜單欄,它的下方放置著一個工具欄,工具欄可以移動到其他的??繀^(qū)域。主窗口允許??康奈恢糜许敳?、左邊、右邊和底部。工具欄可以被拖放到一個??康奈恢?,從而形成一個浮動的工具面板。主窗口的下方,也就是在底部的??课恢孟路接幸粋€狀態(tài)欄。主窗口的中間區(qū)域可以包含其他的窗體。提示工具和“這是什么”幫助按鈕以旁述的方式闡述了用戶接口的使用方法。

對于小屏幕的設(shè)備,使用Qt圖形設(shè)計器定義的標(biāo)準(zhǔn)的QWidget模板比使用主窗口類更好一些。典型的模板包含有菜單欄、工具欄,可能沒有狀態(tài)欄(在必要的情況下,可以用任務(wù)欄,標(biāo)題欄來顯示狀態(tài))。

例如,一個文本編輯器可以把QTextEdit作為中心部件:

QTextEdit*editor=newQTextEdit(mainWindow);

mainWindow->setCentralWidget(editor);

2.菜單類

彈出式菜單QPopupMenu類以垂直列表的方式顯示菜單項,它可以是單個的(例如上下文相關(guān)菜單),可以以菜單欄的方式出現(xiàn),或者是別的彈出式菜單的子菜單出現(xiàn)。

每個菜單項可以有一個圖標(biāo)、一個復(fù)選框和一個加速器(快捷鍵),菜單項通常對應(yīng)一個動作(例如存盤),分隔器通常顯示成一條豎線,它用于把一組相關(guān)聯(lián)的動作菜單分離成組。

下面是一個建立包含有New、Open和Exit菜單項的文件菜單的例子。

QPopupMenu*fileMenu=newQPopupMenu(this);

fileMenu->insertItem(New,this,SLOT(newFile()),CTRL+Key_N);

fileMenu->insertItem(Open...,this,SLOT(open()),CTRL+Key_O);

fileMenu->insertSeparator();

fileMenu->insertItem(Exit,qApp,SLOT(quit()),CTRL+Key_Q);

當(dāng)一個菜單項被選中,和它相關(guān)的將被執(zhí)行。加速器(快捷鍵)很少在一個沒有鍵盤輸入的設(shè)備上使用,的典型配置并未包含對加速器的支持。上面出現(xiàn)的代碼“New”意思是在桌面機器上以“New”的方式顯示出來,但是在嵌入式設(shè)備中,它只會顯示為“New”。

QMenuBar類實現(xiàn)了一個菜單欄,它會自動地設(shè)置幾何尺寸并在它的父窗體的頂部顯示出來,如果父窗體的寬度不夠?qū)捯灾敛荒茱@示一個完整的菜單欄,那么菜單欄將會分為多行顯示出來。Qt內(nèi)置的布局管理能夠自動調(diào)整菜單欄。

Qt的菜單系統(tǒng)是非常靈活的,菜單項可以被動態(tài)使能、失效、添加或者刪除。通過子類化QCustomMenuItem,用戶可以建立客戶化外觀和功能的菜單項。

3.工具欄

工具欄可以被移動到中心區(qū)域的頂部、底部、左邊或右邊。任何工具欄都可以拖拽到工具欄區(qū)域的外邊,作為獨立的浮動工具托盤。

QToolButton類實現(xiàn)了具有一個圖標(biāo),一個3D框架和一個可選標(biāo)簽的工具欄。切換型工具欄按鈕具有可以打開或關(guān)閉某些特征的功能。其他的則會執(zhí)行一個命令??梢詾榛顒?、關(guān)閉、開啟等模式,打開或關(guān)閉等狀態(tài)提供不同的圖標(biāo)。如果只提供一個圖標(biāo),Qt能根據(jù)可視化線索自動地辨別狀態(tài),例如將禁用的按鈕變灰,工具欄按鈕也能觸發(fā)彈出式菜單。

QToolButton通常在QToolBar內(nèi)并排出現(xiàn)。一個程序可含有任意數(shù)量的工具欄并且用戶可以自由地移動它們。工具欄可以包括幾乎所有部件,例如QComboBox和QSpinBox。

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

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




評論


相關(guān)推薦

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

關(guān)閉