2015-08-17 29 views
2

我有一個Qt5項目,我正在用Cmake編譯它。在Cmake生成的可執行文件中未顯示Qt5圖標

我用圖標添加了一個.qr文件。

在QtCreator中,我看到設計模式中的圖標,但編譯它時,它不顯示它們。我嘗試了Cmake中的不同更改,但我無法找到問題所在。這是我的CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) 

PROJECT (UtilityDICOM) 

FIND_PACKAGE(Qt5Widgets REQUIRED) 

SET(CMAKE_INCLUDE_CURRENT_DIR ON) 
SET(CMAKE_AUTOMOC ON) 

SET(CMAKE_AUTOUIC ON) # necessary? 

SET(UI_FORMS 
    View/UI/mainwindow.ui 
) 

SET(UI_RESOURCES 
    View/Resources/iconos.qrc 
) 

SET(UI_QT_CXX 
    mainwindow.cpp 
) 

SET(UI_MOC_HEADERS 
    mainwindow.h 
) 

QT5_WRAP_CPP(UI_WRAPPED_MOC_HEADERS ${UI_MOC_HEADERS}) 
QT5_WRAP_UI(UI_FORM_HEADERS ${UI_FORMS}) 
QT5_ADD_RESOURCES(UI_RESOURCES_RCC ${UI_RESOURCES}) 


ADD_LIBRARY(ui_qt ${UI_QT_CXX} 
    ${UI_WRAPPED_MOC_HEADERS} 
    ${UI_FORM_HEADERS} ${UI_RESOURCES_RCC} 
) 

ADD_EXECUTABLE(UtilityDICOM WIN32 main.cpp) 
TARGET_LINK_LIBRARIES(UtilityDICOM 
    ui_qt 
) 
QT5_USE_MODULES(UtilityDICOM Core Gui Widgets) 

我也試過在ADD_EXECUTABLE添加$ {} UI_RESOURCES_RCC,具有相同的結果。

任何想法?謝謝。

+0

我是否明白正在運行的應用程序無法顯示圖標? – Zaiborg

+0

是的,就是這樣。我可以在QTCreator中看到它們(qrc文件中的引用很好),但編譯的主窗口不顯示它們。 –

+0

是的,有一個生成的qrc_iconos.cpp。我打開它,圖像路徑是正確的。圖像存在於與原始源代碼具有相同相對路徑的新文件夾中。我會嘗試打包源代碼,我剛開始。我從之前的.pro Qt項目中複製了.ui文件,沒有其他。 –

回答

1

最後我得到了它。

在的CMakeLists.txt:

儘管我看到其中TARGET_LINK_LIBRARIES裏面添加的資源的例子,

我加了ADD_EXECUTABLE內的資源變量:

ADD_EXECUTABLE(UtilityDICOM WIN32 main.cpp ${UI_RESOURCES_RCC}) 

刪除後目標文件夾並再次生成,它工作。

謝謝大家。也許這對其他人有幫助。

2

qt使用插件來處理圖像加載。

你的應用程序目錄看起來應該像

<root> 
    -myapplication 
    -<imageformats> 
    -libq* // the actual image plugin you need (if jpg then 'libqjpeg') 

,你可以找到imageformats<qt root dir>/plugins/imageformats

歡呼

+0

我找到了imageformats目錄。如果這就是你的建議,我只是複製該目錄並將其粘貼到生成的項目文件夾中,從CMake進行編譯。但它沒有奏效。 我認爲這個問題與CMake有關,就像它沒有正確鏈接圖標(它是iconos.qrc文件旁邊的圖像文件夾) –

+0

您是否使用qtcreator構建並運行應用程序以確保它是cmake的問題? – Zaiborg

+0

是的,我使用CMake從QtCreator構建並運行。 –