一、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接受並處理使用者和系統的事件並且把它們傳遞給適當的視窗組件。
http://blog.chinaunix.net/space.php?uid=9532036&do=blog&id=2403540