Qt \Qt Designer & KDevelop :
X Window
提供Linux系統一個圖形化,視窗化的環境。若要撰寫
X Window 的應用程式,
最底層可用的函式庫就是 Xlib。然而用Xib直接來開發應用程式不是件容易的事,因為
中間牽涉到許多視窗與圖形介面的低階操作,過程很複雜。為了方便
X Window 的程式開
發,因而有各式各樣的
Tool Kit 出現。其中Qt是較為突出的一種。Qt是挪威Trolltech
AS公
司的產品,它是一套跨平台的視窗程式framework,可以同時跨
UNIX 與微軟視窗系統的
平台。因此使用 Qt
開發的程式,理論上可以不經修改而可以直接在
UNIX 與微軟視窗
系統上編譯使用 (在此指的是圖形介面部分的程式碼,我們的專題因需配合DSP板MAP-CA環
境,仍須在Linux作業系統下執行)。它是以C++
物件導向式語言完成的
Tool Kit,著名的
Linux桌面環境KDE就是基礎於Qt發展出來的。
Qt Designer
Qt Designer是一個
GUI
的工具,這個工具可以幫助我們來加快寫 Qt
程式的速度。利用Qt
Designer可以用一種所見即所得的方式來產生Qt程式的GUI介面程式碼。通過增加一些功能
就可以完成一個程式了。總而言之,利用
Qt Designer可以非常快速的學會Qt。

(圖一)
Qt Designer 工作環境
Qt
的
Signal/Slot/Emit
機制 :
Qt允許任何一個物件以emit發出一個signal,這個信號在程式中通常以connect函式連
接到某個物件的slot。slot其實是一個函式,可以將它視為某個信號的服務函式。當
此信號一發出,Qt的機制會「立即」執行此信號的服務函式。這和一般的事件(event)
的處理不同,視窗framework處理事件的地方通常是在類似「背景」執行,也就是在
視窗產出後,就進入一個迴圈等待事件的發生再加以處理。相較於這種事件
Qt的信
號處理效率高一些。

(圖二)sender
, signal , receiver , slot
連接
完成視窗架構及參數設定後,Qt Designer中的user
interface compiler (uic) 根據我們
的 .ui檔(如form.ui)
產生header
file (如
form.h)
及implementation
file (如
form.cpp)
。application
code in
main.cpp
#includes
form.h 。
如(圖三)所示。

(圖三)
relationship between
.ui
files, generated code and application code
在(圖二)中

Qt
Designer 即會在.h檔中產生如下列
signal & slot 連接程式
connect( conti, SIGNAL(
clicked() ), this, SLOT( boqSlot() ) );
connect(
pause, SIGNAL( clicked() ), this, SLOT( aoqSlot() ) );
connect(
fileNewAction, SIGNAL( activated() ), this, SLOT( fileNew() ) );
connect(
fileOpenAction, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
connect(
fileSaveAction, SIGNAL( activated() ), this, SLOT( fileSave() ) );
connect(
fileSaveAsAction, SIGNAL( activated() ), this, SLOT( fileSaveAs() ) );
connect(
fileExitAction, SIGNAL( activated() ), this, SLOT( fileExit() ) );
KDevelop
在Qt
Designer完成視窗的配置之後,我們把Qt
Designer 所產生的
.h 和
.cpp檔加入
KDevelop。KDevelop是KDE組織所推出整合式開發環境(Integrated
Development
Environment,IDE),如同微軟的視窗環境下的Microsoft
Visual C/C++、Borland
Turbo
C/C++。藉著使用
KDevelop可以很容易地在X
Window開發出具有圖形使用者介面(GUI)
的應用程式。KDevelop
整合了開發程式所需的編譯器、連結器(Linker)、除錯工具、版
本控制工具等。我們利用它來compile,
debug和產生執行檔,可以省下寫
Makefile的麻煩。

(圖四) KDevelop
工作環境
|