2012-12-27 78 views
11

我有一個QT5桌面項目,我添加有創建以下行項目的.pro文件的Qt Creator的編輯器「resource.qrc」文件:Qt的QRC資源文件 - 無法加載圖標

我把空白的前綴和PNG文件(14×14),我試圖用這樣的:

QPixmap pixmap = QPixmap ("://my_image.png"); 
ui->combobox->addItem(QIcon(pixmap), "itemname"); 

的問題是:該圖標會顯示不出來!

以下工作:

QPixmap pixmap(14,14); 
pixmap.fill(QColor("red")); 
ui->combobox->addItem(QIcon(pixmap), "itemname"); 

所以這個問題必須在資源嵌入過程。我注意到,生成的「EXE」並沒有在它裏面的資源部分......我不有靜態鏈接的外部庫,所以我不認爲我需要Q_INIT_RESOURCE(資源)宏(這讓我不確定外部)

更新: 我在這裏發佈我的QRC文件:

<RCC> 
    <qresource prefix="/"> 
     <file>my_image.png</file> 
    </qresource> 
</RCC> 

這很簡單,我不明白爲什麼在運行時圖標不顯示

+2

Qt資源沒有使用Windows EXE資源機制,所以這是正常的,他們沒有出現在那裏。請發佈你的resource.qrc文件。另外,請注意,您可以直接在QIcon中加載圖像。無需通過QPixmap。試試看:'ui-> combobox-> addItem(QIcon(「:/ my_image.png」),「itemname」);' –

+0

我只是做了,謝謝你的幫忙! –

回答

11

@尼克斯C.給你有用的建議,但我認爲你的主要問題是,你沒有使用正確的鏈接到資源。

在您的代碼,您有:

QPixmap pixmap = QPixmap ("://my_image.png"); 

但是,根據documentation,它應該是

QPixmap pixmap = QPixmap (":/my_image.png"); 

或者你可以到你的資源給別名,並使用這些來代替。

21

我最近有同樣的問題,其中我畸形的資源字符串。如果您使用的是當前版本的Qt Creator,您可以打開您的.qrc文件進行編輯,然後右鍵單擊您嘗試解決的資源(在本例中爲圖像),然後單擊「將資源路徑複製到剪貼板」。瞧,你每次都有正確的資源字符串。

Qt Creator非常棒。

希望這會有所幫助!

+0

Thx for'複製資源路徑...'這表明我有複製文件夾':/ dictionaries/dictionaries/en.dic' –

0

問題解決在使用rcc.exe C:\ ROOT \ QT> C:\ ROOT \ QT \ 4.7.4 \ BIN \ rcc.exe Headless.qrc -o qtresources.cpp 在編譯過程中,你應該有圖像在路徑中。 創建qtresources.cpp文件在makefile或project中包含此文件。你應該能看到圖像。