2010-02-02 24 views
0

場景:在dependend靜態庫項目的main.cpp和GUI類時導入Qt的資源,

我已經安裝MSVC2005與Qt的Visual Studio的加載項。在我的解決方案中,有一個項目A由多個簡單的C++代碼模塊組成,它構建於可執行文件A.exe。項目A不包含帶main().cpp文件,但依賴於項目B

B是一個構建爲靜態庫的Qt項目。它由多個GUI類組成,一個典型的Qt main.cpp()。編譯鏈接AB工作就像一個魅力,我有一個Qt應用程序。我做了一些分支,它們都與GUI共享相同的接口,但對底層業務邏輯具有不同的定製。我可以批量生成A.exe,Afork1.exe等,他們都將有相同的GUI,這是相當整潔。

問題:

有一個.qrc文件具有多個圖像,圖標等,它們在GUI中使用。 GUI類是使用Qt Designer製作的,我將這些資源添加到了GUI小部件中。建立並運行後A.exe我看不到這些圖標和圖像,它們的空間在小部件中保留,但未填充內容。我猜,這些資源沒有鏈接到可執行文件中。有沒有辦法確保鏈接Qt靜態lib項目的一部分資源?

回答

2

您需要顯式初始化資源。從Qt docs

如果你有一個靜態 庫資源,則可能需要通過 強制 初始化你的資源的調用Q_INIT_RESOURCE()與.qrc文件的 基本名稱。例如: 示例:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    Q_INIT_RESOURCE(graphlib); 
    ... 
    return app.exec(); 
}