Qt C++名稱空間
阿新 • • 發佈:2020-08-10
關於命名空的自定義方法,可見參考資料[1],關於Qt Creator根據*.ui檔案生成的ui_xxx.h中的巨集QT_BEGIN_NAMESPACE和QT_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; }