1 QT分析之QApplication的初始化

2021-09-07 09:28:33 字數 757 閱讀 4772

在開始分析之前交代一下,一是分析的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針對自己的移動裝置平台規劃的...