一、QT簡介
Qt是一個跨平臺的C++圖形用戶界面庫,.由挪威TrollTech公司出品,目前包括Qt/X11,基於Frambuffer的Qt Embedded,快速開發工具Qt Designer及國際化工具Qt Linguist等.Qt支持Unix及Linux系統,還支持 Windows NT/Windows 2k及Qindows 95/98平臺.Qt的良好封裝機制使其模塊化程度非常高,可重用性較好.
Qt/Embeded是面向嵌入式系統的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C++ GUI和基於Linux的嵌入式平臺開發工具。Qt/Embeded API可用於多種開發項目。許多基於Qt的X Window程序可以非常方便地移植到嵌入式版本。
下面我們就從實際應用中認識Qt.
二、在終端下編寫Qt程序
我們先要介紹在終端窗口編寫Qt程序.
打開一個終端,建立一個文件夾,如:mkdir hello
然後進入這個文件夾:cd hello
創建c++文件,vi hello.cpp
在文件中鍵入下面的代碼:
#include <qapplication.h>
#include <qlabel.h>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QLabel *label=new QLabel("Hello Qt!",0);
app.setMainWidget(label);
label->show();
return app.exec();
}
然後我們用qt的工具qmake來生成工程文件:
qmake -project
大家可以用ls查看一下,是不是多了一個名爲hello.pro的工程文件.
接下來是生成Makefile文件:
qmake hello.pro
呵呵,ls一下,Makefile終於看到你了.
接下來就是make了,等上一段時間.
運行程序./hello
下面我們來講解上面的程序:
#include <qapplication.h>
這一行包含了QApplication類的定義。在每一個使用Qt的應用程序中都必須使用一個QApplication對象。QApplication管理了各種各樣的應用程序的廣泛資源,比如默認的字體和光標。
#include <qpushbutton.h>
這一行包含了QPushButton類的定義。參考文檔的文件的最上部分提到了使用哪個類就必須包含哪個頭文件的說明。
QPushButton是一個經典的圖形用戶界面按鈕,用戶可以按下去,也可以放開。它管理自己的觀感,就像其它每一個QWidget。一個窗口部件就是一個可以處理用戶輸入和繪製圖形的用戶界面對象。程序員可以改變它的全部觀感和它的許多主要的屬性(比如顏色),還有這個窗口部件的內容。一個QPushButton可以顯示一段文本或者一個QPixmap。
int main( int argc, char **argv )
main()函數是程序的入口。幾乎在使用Qt的所有情況下,main()只需要在把控制轉交給Qt庫之前執行一些初始化,然後Qt庫通過事件來向程序告知用戶的行爲。
argc是命令行變量的數量,argv是命令行變量的數組。這是一個C/C++特徵。它不是Qt專有的,無論如何Qt需要處理這些變量(請看下面)。
QApplication a( argc, argv );
a是這個程序的QApplication。它在這裏被創建並且處理這些命令行變量.在任何Qt的窗口系統部件被使用之前創建QApplication對象是必須的。
QPushButton hello( "Hello world!", 0 );
這裏,在QApplication之後,接着的是第一個窗口系統代碼:一個按鈕被創建了。
這個按鈕被設置成顯示“Hello world!”並且它自己構成了一個窗口(因爲在構造函數指定0爲它的父窗口,在這個父窗口中按鈕被定位)。
hello.resize( 100, 30 );
這個按酒被設置成100像素寬,30像素高(加上窗口系統邊框)。在這種情況下,我們不用考慮按鈕的位置,並且我們接受默認值。
a.setMainWidget( &hello );
這個按鈕被選爲這個應用程序的主窗口部件。如果用戶關閉了主窗口部件,應用程序就退出了。
你不用必須設置一個主窗口部件,但絕大多數程序都有一個。
hello.show();
當你創建一個窗口部件的時候,它是不可見的。你必須調用show()來使它變爲可見的。
return a.exec();
這裏就是main()把控制轉交給Qt,並且當應用程序退出的時候exec()就會返回。
在exec()中,Qt接受並處理用戶和系統的事件並且把它們傳遞給適當的窗口部件。
三、用快速開發工具Qt Designer編寫Qt程序
我們用的開發系統是Linux,開發工具是Qt Designer.如果大家安裝完整版的Linux,系統就帶這個工具了.大家可以點擊應用程序->編程->Qt Designer來找到它.
Qt Designer首先呈現給用戶的是一個New/Open對話框。因爲這裏要創建一個C++程序,所以在此選擇C++ Project,點擊“OK”繼續。
選擇一個想要保存文件的位置,並且給出一個文件名,注意這裏文件名的擴展名一定要是.pro。點擊“OK”後,到下面的界面.
現在我們看到的就是Qt Designer主窗口,確保Property Editor可見。如果它是不可見的,用戶可以通過Windows→Views→Property Editor/Signal Handlers選單選項來使其可見.
下面我們建立一個如下圖所示的對話框.
通過選擇File→New選單,然後選擇Dialog來創建一個新的對話框。這時Qt Designer會創建一個新的空白對話框,用戶可以在其上放置輸入框和按鈕。
打開Property Editor,把name的值改爲“MainForm”,把caption的值改爲“Hello world”。 '
然後我們在對話框上拖拽上一個lable,方法是在左面Toolbox的common widgets裏的TextLabel,然後在空白對話框上畫一下.改一下caption的值改爲“Hello world”就得到如下的界面了.
現在就已經基本完成這個應用程序了。不過在編譯和運行此應用程序之前,還要創建一個main.cpp文件。方法是選擇File→New→C++Main- File(main.cpp),只需接受缺省的配置即可。main.cpp會自動在Code Editor中打開。因爲這裏無需改變main.cpp中的 任何東西,所以直接將Code Editor窗口關閉,並且保存main.cpp。
到此爲止,在Qt Designer中的工作已經完成了。保存整個項目,下面來編譯和運行這個程序。在編譯程序之前,要首先生成它的Makefile文件。打開一個終端,然後切換至保存有項目的位置,使用以下命令來生成Makefile文件:
#qmake -o Makefile hellopro
現在,就可以運行make來編譯程序了,根據系統的性能,這個步驟需要花費一點時間。當編譯工作完成後,輸入./hello來運行程序。如果一切正常,用戶應該已經看到程序了。
下面是我電腦上程序的界面:
到這裏我們完成了第一個Qt的程序,怎麼樣呢,是不是有點小成就感.
這裏我還有個建議:
最好把每一個項目單獨放在一個文件夾裏.這樣就可以讓我們更方便的使用QT爲我們提供的工具,例如qmake等。