在開始分析之前交代一下,一是分析的qt在window平台實現(其它os類似);二、分析的手段為看原始碼+單步跟蹤。有時候會讓編譯器產生預編譯後的輸出(使用-e引數),便於觀察;三、分析得qt版本為4.5.3
下面是qt經典的hello world程式
5 int main( int argc, char **ar** )
6
看q_d的定義:
1 #define q_d(class) class##private * const d = d_func()在附近正好看到q_q的定義:
1 #define q_q(class) class * const q = q_func()由此看到在qt的程式裡最好不要定義d、q這樣的變數。
所以d->construct()呼叫的其實是
那麼這個construct()幹了什麼事呢?
2
其中eventdispatcher->startingup();實際呼叫的是:qeventdispatcherwin32::startingup(),主要是註冊事件分發器。
2 : qobject(p, 0)
3
2 else
32 33 qt_startup_hook(); // 目前是空函式
34 }
object的構造又做了什麼事情呢?
我們看qobject的類定義,d_ptr是qobject中唯一的資料成員:
**:
1 QT 檔案操作
模式 值描述qiodevice notopen 0x0000 不開啟qiodevice readonly 0x0001 唯讀方式 qiodevice writeonly 0x0002 只寫方式,如果檔案不存在則會自動建立檔案 qiodevice readwrite readonly writeonl...
1 QT的pro檔案詳解
qt是乙個跨平台的c 圖形使用者介面應用程式框架。它為應用程式開發者提供建立藝術級圖形介面所需的所有功能。它是完全物件導向的,很容易擴充套件,並且允許真正的元件程式設計。跨平台,幾乎支援所有的平台 介面簡單,容易上手,學習qt框架對學習其他框架有參考意義。一定程度上簡化了記憶體 機制 開發效率高,能...
1 qt開發環境搭建 初級
qt開發環境搭建 一.qt介紹.qt 是乙個跨平台的 c 圖形使用者介面庫,由挪威 trolltech 公司於1995年底出品。2008年1月31日,nokia公司宣布通過公開競購的方式收購trolltech公司,旗下包括qt在內的技術都歸入nokia旗下。並且nokia針對自己的移動裝置平台規劃的...