本文選自 《C++ GUI 程式設計》第二版 2.6章
Qt提供了大量的内建控件及通用對話框可滿足程式員的絕大部分要求。本節中我們将對這些控件和對話框作一個大概的介紹。我們将在後面的章節中對部分控件作詳細介紹:在第三章将介紹QMenuBar,QToolBar和QStatusBar等主視窗控件,在第六章中将介紹QSplitter和QScrollArea等布局類控件。大部分的内建控件和對話框都将在本書的例子中涉及。2.17至2.26的截圖中控件均為KDE3 Plastique風格。
圖2.17 Qt按紐控件

圖2.18 Qt單頁容器控件
圖2.19 Qt多頁容器控件
圖2.20 Qt 項目檢視控件
圖2.21 Qt顯示控件
圖2.22 Qt輸入控件
圖2.23 Qt回報對話框
圖2.24 Qt顔色和字型對話框
圖2.25 Qt檔案和列印對話框
圖2.26 Qt向導對話框
如圖2.17, Qt提供了四種“按紐”:QPushButton, QtoolButton, QcheckBox和 QRadioButton。QPushButton和QToolButton一般執行某個動作,但也可用作觸發按紐。QCheckBox一般用來提供多選項,而QRadioButton常用于提供單選項。
Qt容器類控件是指可容納其他控件的控件,如圖2.18和圖2.19所示。QFrame可畫些簡單的圖形,也可作為其他控件的基類,如QToolBox,QLabel等。
QTabWidget和QToolBox是多頁控件,每一頁均為一個子控件,且從0開始計數。在QTabWidget中,Tab控件的形狀和位置均可設定。
如圖2.20的内容顯示控件一般用于大量資料的顯示,常使用滾動條。滾動條機制由QAbstractScrollArea繼承而來,後者為内容顯示控件及其他一些可使用滾動條控件的基類。
Qt内建了一種格式化文本引擎可顯示和編輯格式化文本,此引擎支援字型顯示,對齊,清單,表格,圖像,超連結等功能,支援HTML格式。此引擎支援的HTML标簽和CSS屬性詳細資訊請參見:http://doc.trolltech.com/4.3/richtext-html-subset.html。
Qt提供了若幹控件專門用于顯示資訊,如圖2.21所示。QLabel是其中最為重要的一種,可用于顯示純文字,HTML,圖像資訊等。
QtextBrowser是一種隻讀QTextEdit子類,用于顯示格式化文本。與QLabel不同,此類型可顯示大規模格式化文檔,并可自動添加滾動條,提供滑鼠及鍵盤導航功能。4.3版本的Qt助手便是用QTextBrowser寫成的。
如圖2.22,Qt提供了若幹用于輸入的控件。QLineEdit允許使用屏蔽字元或校驗器對輸入字元進行限制,兩種方式也可同時使用。QTextEdit是QAbstractScrollArea的派生類,可用于編輯大規模的純文字或是格式化文本,在編輯格式化文本時,它可顯示所有Qt格式化文本引擎所支援的元素。QLineEdit和QTextEdit均與系統剪貼闆完美內建。
如圖2.23,Qt提供了若幹标準消息框和錯誤對話框,并記錄其顯示的消息内容。操作進度可由QProgressDialog或圖2.23所示的QProgressBar進行模拟。在需要輸入一行文本或是一個數字時,使用QInputDialog非常友善。
如圖2.24和2.25,Qt提供了一組标準對話框以友善選取顔色,字型和方件,或是進行列印。
在windows和Mac OS X系統上,Qt會盡可能的使用本地風格對話框,同時顔色和字型也都可以利用Qt機制自定義。
最後,利用QWizard可友善快捷的建立向導(Mac上稱作助手)。向導常用于幫助使用者完成複雜或是很少用到的操作,圖2.26為一個向導示例。
内建控件和對話框提供了大量通用功能,通過修改控件屬性或是建立信号/槽聯接,自定義槽函數等方式我們還可實作自定義功能。
如果Qt内建的控件和對話框還不能滿足你的要求,那可以考慮一下Qt Solutions,或是Qt商業版本,第三方版本等。Qt Solution提供了大量新增的控件,包括顔色選擇器,旋紐,扇形菜單,屬性浏覽器等。
在某些情況下,我們還想建立自己的自定義控件。在Qt中,這也是很友善完成的,且自定義控件與内建控件一樣可直接對Qt中平台無關的繪制函數進行操作,進而使得我們的自定義控件也有着與本地作業系統相同的觀感。自定義控件甚至還可以內建到Qt設計器中,像内建控件一樣使用。在第五章中我們将介紹如何建立自定義控件。