1. 程式人生 > >必須要了解的QT特性!

必須要了解的QT特性!

1、signal和slot是必須理解的。否則看QT的幫助文件都成問題。

2、QT的property特性倒不是必需的。不過看看,很有意思。
3、QT由於是跨平臺SDK。因此,它對event的處理並不像MFC或XAPI那樣明顯。但最好能對event filter有一個清晰的概念。這種filter機制可以把定製程式碼hook到具體的widget中,有時在簡化程式設計上能起到巨大的作用。
4、QObject中的每個函式都是必須仔細研究的。至少,要對那個帶parent的建構函式的含有理解清楚。由於QT在GUI的建立上經常要使用多層佈局,最好不要手動去delete QObject的派生類。使用帶parent的建構函式,QObject會自動釋放所有child物件。
5、在QT中有非常強烈的佈局概念。仔細研究研究,很快就會創造出非常漂亮的介面。
6、QT在繪製窗體的時候提倡程式設計師使用他的風格機制,而不是向Windows那樣隨心所欲的繪製。QT把標準窗體拆分成各個元件,然後按部分進行繪製。QT的風格機制還提供了很多窗體尺寸的資訊。當然,你可以寫一個自己的風格,並安裝在QT中。
7、QTimer是個非常有用的類。由於signal和slot機制基本上就是callback機制,在大量是有時,可能導致遞迴。QTimer除了能產生定時外,它的令一個重要的任務就是可以丟擲一個在空閒時執行的signal,具體函式名我記不清楚了,看看QTimer穩當。一般情況下,跑出 signal的時間引數是0。

理解了這些內容,應該能開發出不錯的QT應用。應該還有其他一些非常有個性的特點,但我一時也記不清了。

不過要開發QT最好還是使用KDevelop來開發。因為QT在實現signal/slot和property的過程中,使用了一個預編譯機制。這個預編譯器的名字叫moc。KDevelop會自動把標頭檔案用moc進行處理,來產生另外的一個cpp原檔案,它實現了QObject的一些虛擬函式和聲明瞭一些靜態變數。在初學QT程式設計的時候,最好不要在cpp原始檔中宣告具有signal/slot的QObject子類。因為,KDevelop並不負責檢查 cpp檔案,在這種情況下要麼自己手動執行moc,要麼修改Makefile.am。總之,會造成混淆。

KDE SDK是在QT上發展的一個桌面SDK。在Widget層面上他的擴充套件並不大。主要在於action和一些effect上的擴充套件。比如對於toolbar 上的button,KDE的效果明顯好於QT。不過,如果只是用QT開發,可以把這些程式碼copy過來。寫KDe程式必須對目錄組織邏輯非常瞭解,否則在釋出應用的時候會非常困難。

KDE和QT在i18n上基本上是一致的。顯示中文最好使用po檔案來定義。

QT是一種非常容易上手的SDK,它提供了非常多的輔助類。在圖形檔案的支援上尤其突出。在QT下使用gif格式非常容易。

學習QT最好從QT的基本特性上著手,然後逐步發展的QT的整個框架風格。KDe的cvs上的qt-copy裡有QT的Linux下的大量的原始碼。可以幫助你理解QT的功能。其實這些程式碼的價值是非常巨大的。不禁在QT上,在Linux下的很多開發上,參考這些程式碼的價值都是無法估量的。

還有,除了在介面上現實中文,有時可能要處理檔案級的中文。QT的decoder相關類可以非常好的完成這些工作。