1. 程式人生 > 實用技巧 >Qt C++名稱空間

Qt C++名稱空間

關於命名空的自定義方法,可見參考資料[1],關於Qt Creator根據*.ui檔案生成的ui_xxx.h中的巨集QT_BEGIN_NAMESPACEQT_ENG_NAMESPACE的定義,可見參考資料[3]。下面解析ui_xxx.h檔案中最後面的以下內容的含義:

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

就是在QT_NAMESPACE這個名稱空間中,再定義一個子名稱空間,裡面定義了一個類MainWindow,這個類public繼承於Ui_MainWindow,而MainWindow本身沒有定義新的成員。

由上面的解析就可以知道,在MainWindow.cpp檔案中並沒有直接定義Ui_MainWindow這個類物件,而是改為定義Ui名稱空間中的MainWindow類的物件!

同時,由於ui_xxx.h檔案會被其它原始檔所包含,因此不在MainWindow.cpp中直接包含此標頭檔案,避免加長編譯時間。取而代之的是,在MainWindow.cpp檔案中,再重定義了一個名稱空間,並在此名稱空間中宣告Ui::MainWindow,如下面程式碼所示:

namespace Ui {
class MainWindow;
}