Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to display an icon on the top-left corner of a window, using CMake?
Forum Update on Monday, May 27th 2025

How to display an icon on the top-left corner of a window, using CMake?

Scheduled Pinned Locked Moved Unsolved General and Desktop
11 Posts 4 Posters 690 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    beginner123
    wrote on last edited by beginner123
    #1

    I have an old project named MotherVoice, originally written in Qt 5.14.0 several years ago. With the generous help from several people on the Qt Discussion Forum, I was able to update my scripts first to Qt 5.15.2 and then to Qt 6.8.0. Thank you so much!!! The updated project is now working properly in Qt 6.8.0, with one remaining issue.

    Since CMake is now the primary theme in Qt 6 (replacing QMake), I converted my project’s QMake .pro file to a CMake file. However, I encountered an issue related to displaying an icon (i.e., an icon I designed for my lab) in the top-left corner of a window.

    For clarity, here is the content of my QMake .pro project file that works.
    QT += core gui widgets charts multimedia 
    
    TARGET = MotherVoice      
    TEMPLATE = app          
      
    RC_ICONS = ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico   
    ICON = ../../../xResources/AEPLab_icon/AEP_logo_3D.icns 
    
    DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00 
    
    SOURCES += \
        ../../FuhClasses/CWav.cpp \
        ../../FuhClasses/entryMotherVoice.cpp \
        main.cpp \
        subjectwindow.cpp \
        mainwindow.cpp \
        ../../FuhClasses/FuhClasses.cpp \
        ../../FuhClasses/dataMotherVoice.cpp \
        ../../FuhClasses/recordMotherVoice.cpp \
    
    HEADERS += \
        ../../FuhClasses/CWav.h \
        ../../FuhClasses/entryMotherVoice.h \
        subjectwindow.h \
        mainwindow.h \
        ../../FuhClasses/FuhClasses.h \
        ../../FuhClasses/dataMotherVoice.h \
        ../../FuhClasses/recordMotherVoice.h \
        ../../../xResources/FFTReal/v2.00/Array.h \
        ../../../xResources/FFTReal/v2.00/Array.hpp \
        ../../../xResources/FFTReal/v2.00/def.h \
        ../../../xResources/FFTReal/v2.00/DynArray.h \
        ../../../xResources/FFTReal/v2.00/DynArray.hpp \
        ../../../xResources/FFTReal/v2.00/FFTReal.h \
        ../../../xResources/FFTReal/v2.00/FFTReal.hpp \
        ../../../xResources/FFTReal/v2.00/FFTRealFixLen.h \
        ../../../xResources/FFTReal/v2.00/FFTRealFixLen.hpp \
        ../../../xResources/FFTReal/v2.00/FFTRealFixLenParam.h \
        ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.h \
        ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.hpp \
        ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.h \
        ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.hpp \
        ../../../xResources/FFTReal/v2.00/FFTRealSelect.h \
        ../../../xResources/FFTReal/v2.00/FFTRealSelect.hpp \
        ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.h \
        ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.hpp \
        ../../../xResources/FFTReal/v2.00/OscSinCos.h \
        ../../../xResources/FFTReal/v2.00/OscSinCos.hpp
    
    INCLUDEPATH += \
        ../../FuhClasses/ \
        ../../../xResources/FFTReal/v2.00/
    
    DISTFILES += \
        ../../../xResources/AEPLab_icon/AEP_logo_3D.icns \
        ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico
    
    RESOURCES += \
        FuhResources.qrc
    
    Here is a screenshot, where my lab's icon is displayed properly in the top-left corner of a window.

    icon_working.png

    Here is the content of the CMakeLists.txt file that I composed.
    cmake_minimum_required(VERSION 3.14)
    
    set(TARGET_NAME "MotherVoice") 
    
    project(${TARGET_NAME} VERSION 0.12)
    
    set(CMAKE_PREFIX_PATH "C:/Qt/6.8.0/mingw_64")
    
    find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Charts Multimedia)
    
    set(CMAKE_AUTOMOC ON)     
    set(CMAKE_AUTORCC ON)    
    
    add_executable(${TARGET_NAME}
        main.cpp
        mainwindow.cpp
        subjectwindow.cpp
        ../../FuhClasses/CWav.cpp
        ../../FuhClasses/FuhClasses.cpp
        ../../FuhClasses/dataMotherVoice.cpp
        ../../FuhClasses/recordMotherVoice.cpp
        ../../FuhClasses/entryMotherVoice.cpp
        resources.qrc
    )
    
    target_sources(${TARGET_NAME} PRIVATE
        mainwindow.h
        subjectwindow.h
        ../../FuhClasses/CWav.h
        ../../FuhClasses/FuhClasses.h
        ../../FuhClasses/dataMotherVoice.h
        ../../FuhClasses/recordMotherVoice.h
        ../../FuhClasses/entryMotherVoice.h
        ../../../xResources/FFTReal/v2.00/Array.h
        ../../../xResources/FFTReal/v2.00/Array.hpp
        ../../../xResources/FFTReal/v2.00/def.h
        ../../../xResources/FFTReal/v2.00/DynArray.h
        ../../../xResources/FFTReal/v2.00/DynArray.hpp
        ../../../xResources/FFTReal/v2.00/FFTReal.h
        ../../../xResources/FFTReal/v2.00/FFTReal.hpp
        ../../../xResources/FFTReal/v2.00/FFTRealFixLen.h
        ../../../xResources/FFTReal/v2.00/FFTRealFixLen.hpp
        ../../../xResources/FFTReal/v2.00/FFTRealFixLenParam.h
        ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.h
        ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.hpp
        ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.h
        ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.hpp
        ../../../xResources/FFTReal/v2.00/FFTRealSelect.h
        ../../../xResources/FFTReal/v2.00/FFTRealSelect.hpp
        ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.h
        ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.hpp
        ../../../xResources/FFTReal/v2.00/OscSinCos.h
        ../../../xResources/FFTReal/v2.00/OscSinCos.hpp
    )
    
    add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00) 
    
    if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Release)
    endif()
    
    if(WIN32)        
        set(WIN_ICON "../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico")
        target_sources(${TARGET_NAME} PRIVATE ${WIN_ICON})
    elseif(APPLE)   
        set(MAC_ICON "../../../xResources/AEPLab_icon/AEP_logo_3D.icns")
        set_source_files_properties(${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
        target_sources(${TARGET_NAME} PRIVATE ${MAC_ICON})
    endif()
    
    target_include_directories(${TARGET_NAME} PRIVATE
        ../../FuhClasses
        ../../../xResources/FFTReal/v2.00
    )
    
    target_link_libraries(${TARGET_NAME} PRIVATE
        Qt6::Core
        Qt6::Gui
        Qt6::Widgets
        Qt6::Charts
        Qt6::Multimedia
    )
    
    install(FILES
        ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico
        DESTINATION .
    )
    
    Here is a screenshot showing a generic icon displayed in the top-left corner of a window, where my lab icon is supposed to be displayed but, for some reason, is not.

    icon_not_working.png

    The lab icon I created is intended for use in all of my Qt projects, including this MotherVoice project. This specific icon is saved in a folder with a relative path to the main.cpp as follows: "../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico" for Windows computers. For Mac computers, I have created a separate icon set saved in the relative path "../../../xResources/AEPLab_icon/AEP_logo_3D.icns".

    As the relative path works in the QMake .pro project file, the relative path should be correct. However, for some reason, my lab icon is not displayed on the top-left corner of a window when I switched to CMake. I must have done something wrong.

    I am fairly new to CMake and may have made some obvious mistakes that I am unaware of. For those, please accept my apologies.

    Any comments or suggestions would be greatly appreciated!

    Pl45m4P 1 Reply Last reply
    0
    • Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #2

      This is not a cmake problem. You can set the window icon with QApplication::setWindowIcon().

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2
      • B beginner123

        I have an old project named MotherVoice, originally written in Qt 5.14.0 several years ago. With the generous help from several people on the Qt Discussion Forum, I was able to update my scripts first to Qt 5.15.2 and then to Qt 6.8.0. Thank you so much!!! The updated project is now working properly in Qt 6.8.0, with one remaining issue.

        Since CMake is now the primary theme in Qt 6 (replacing QMake), I converted my project’s QMake .pro file to a CMake file. However, I encountered an issue related to displaying an icon (i.e., an icon I designed for my lab) in the top-left corner of a window.

        For clarity, here is the content of my QMake .pro project file that works.
        QT += core gui widgets charts multimedia 
        
        TARGET = MotherVoice      
        TEMPLATE = app          
          
        RC_ICONS = ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico   
        ICON = ../../../xResources/AEPLab_icon/AEP_logo_3D.icns 
        
        DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00 
        
        SOURCES += \
            ../../FuhClasses/CWav.cpp \
            ../../FuhClasses/entryMotherVoice.cpp \
            main.cpp \
            subjectwindow.cpp \
            mainwindow.cpp \
            ../../FuhClasses/FuhClasses.cpp \
            ../../FuhClasses/dataMotherVoice.cpp \
            ../../FuhClasses/recordMotherVoice.cpp \
        
        HEADERS += \
            ../../FuhClasses/CWav.h \
            ../../FuhClasses/entryMotherVoice.h \
            subjectwindow.h \
            mainwindow.h \
            ../../FuhClasses/FuhClasses.h \
            ../../FuhClasses/dataMotherVoice.h \
            ../../FuhClasses/recordMotherVoice.h \
            ../../../xResources/FFTReal/v2.00/Array.h \
            ../../../xResources/FFTReal/v2.00/Array.hpp \
            ../../../xResources/FFTReal/v2.00/def.h \
            ../../../xResources/FFTReal/v2.00/DynArray.h \
            ../../../xResources/FFTReal/v2.00/DynArray.hpp \
            ../../../xResources/FFTReal/v2.00/FFTReal.h \
            ../../../xResources/FFTReal/v2.00/FFTReal.hpp \
            ../../../xResources/FFTReal/v2.00/FFTRealFixLen.h \
            ../../../xResources/FFTReal/v2.00/FFTRealFixLen.hpp \
            ../../../xResources/FFTReal/v2.00/FFTRealFixLenParam.h \
            ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.h \
            ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.hpp \
            ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.h \
            ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.hpp \
            ../../../xResources/FFTReal/v2.00/FFTRealSelect.h \
            ../../../xResources/FFTReal/v2.00/FFTRealSelect.hpp \
            ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.h \
            ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.hpp \
            ../../../xResources/FFTReal/v2.00/OscSinCos.h \
            ../../../xResources/FFTReal/v2.00/OscSinCos.hpp
        
        INCLUDEPATH += \
            ../../FuhClasses/ \
            ../../../xResources/FFTReal/v2.00/
        
        DISTFILES += \
            ../../../xResources/AEPLab_icon/AEP_logo_3D.icns \
            ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico
        
        RESOURCES += \
            FuhResources.qrc
        
        Here is a screenshot, where my lab's icon is displayed properly in the top-left corner of a window.

        icon_working.png

        Here is the content of the CMakeLists.txt file that I composed.
        cmake_minimum_required(VERSION 3.14)
        
        set(TARGET_NAME "MotherVoice") 
        
        project(${TARGET_NAME} VERSION 0.12)
        
        set(CMAKE_PREFIX_PATH "C:/Qt/6.8.0/mingw_64")
        
        find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Charts Multimedia)
        
        set(CMAKE_AUTOMOC ON)     
        set(CMAKE_AUTORCC ON)    
        
        add_executable(${TARGET_NAME}
            main.cpp
            mainwindow.cpp
            subjectwindow.cpp
            ../../FuhClasses/CWav.cpp
            ../../FuhClasses/FuhClasses.cpp
            ../../FuhClasses/dataMotherVoice.cpp
            ../../FuhClasses/recordMotherVoice.cpp
            ../../FuhClasses/entryMotherVoice.cpp
            resources.qrc
        )
        
        target_sources(${TARGET_NAME} PRIVATE
            mainwindow.h
            subjectwindow.h
            ../../FuhClasses/CWav.h
            ../../FuhClasses/FuhClasses.h
            ../../FuhClasses/dataMotherVoice.h
            ../../FuhClasses/recordMotherVoice.h
            ../../FuhClasses/entryMotherVoice.h
            ../../../xResources/FFTReal/v2.00/Array.h
            ../../../xResources/FFTReal/v2.00/Array.hpp
            ../../../xResources/FFTReal/v2.00/def.h
            ../../../xResources/FFTReal/v2.00/DynArray.h
            ../../../xResources/FFTReal/v2.00/DynArray.hpp
            ../../../xResources/FFTReal/v2.00/FFTReal.h
            ../../../xResources/FFTReal/v2.00/FFTReal.hpp
            ../../../xResources/FFTReal/v2.00/FFTRealFixLen.h
            ../../../xResources/FFTReal/v2.00/FFTRealFixLen.hpp
            ../../../xResources/FFTReal/v2.00/FFTRealFixLenParam.h
            ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.h
            ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.hpp
            ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.h
            ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.hpp
            ../../../xResources/FFTReal/v2.00/FFTRealSelect.h
            ../../../xResources/FFTReal/v2.00/FFTRealSelect.hpp
            ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.h
            ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.hpp
            ../../../xResources/FFTReal/v2.00/OscSinCos.h
            ../../../xResources/FFTReal/v2.00/OscSinCos.hpp
        )
        
        add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00) 
        
        if(NOT CMAKE_BUILD_TYPE)
            set(CMAKE_BUILD_TYPE Release)
        endif()
        
        if(WIN32)        
            set(WIN_ICON "../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico")
            target_sources(${TARGET_NAME} PRIVATE ${WIN_ICON})
        elseif(APPLE)   
            set(MAC_ICON "../../../xResources/AEPLab_icon/AEP_logo_3D.icns")
            set_source_files_properties(${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
            target_sources(${TARGET_NAME} PRIVATE ${MAC_ICON})
        endif()
        
        target_include_directories(${TARGET_NAME} PRIVATE
            ../../FuhClasses
            ../../../xResources/FFTReal/v2.00
        )
        
        target_link_libraries(${TARGET_NAME} PRIVATE
            Qt6::Core
            Qt6::Gui
            Qt6::Widgets
            Qt6::Charts
            Qt6::Multimedia
        )
        
        install(FILES
            ../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico
            DESTINATION .
        )
        
        Here is a screenshot showing a generic icon displayed in the top-left corner of a window, where my lab icon is supposed to be displayed but, for some reason, is not.

        icon_not_working.png

        The lab icon I created is intended for use in all of my Qt projects, including this MotherVoice project. This specific icon is saved in a folder with a relative path to the main.cpp as follows: "../../../xResources/AEPLab_icon/AEP_logo_3D_original.ico" for Windows computers. For Mac computers, I have created a separate icon set saved in the relative path "../../../xResources/AEPLab_icon/AEP_logo_3D.icns".

        As the relative path works in the QMake .pro project file, the relative path should be correct. However, for some reason, my lab icon is not displayed on the top-left corner of a window when I switched to CMake. I must have done something wrong.

        I am fairly new to CMake and may have made some obvious mistakes that I am unaware of. For those, please accept my apologies.

        Any comments or suggestions would be greatly appreciated!

        Pl45m4P Offline
        Pl45m4P Offline
        Pl45m4
        wrote on last edited by
        #3

        @beginner123

        Does your new version of you app running on Qt 6.8 have your image as icon of the executable file (and also showing in TaskBar)?! Or is this also not working

        Here is how you do it using CMake.
        (How to set an icon to the window, like @Christian-Ehrlicher said above, is also mentioned there in the first few sentences)

        • https://doc.qt.io/qt-6/appicon.html

        If debugging is the process of removing software bugs, then programming must be the process of putting them in.

        ~E. W. Dijkstra

        1 Reply Last reply
        2
        • B Offline
          B Offline
          beginner123
          wrote on last edited by
          #4

          With your guidance, I was able to display my lab's icon in the top-left corner of the application window. Thank you!

          To make sure that I have done this properly (and to ask a follow-up question), please allow me to list the changes that I have made.

          Here is my revised CMakeLists.txt
          cmake_minimum_required(VERSION 3.14)
          
          set(TARGET_NAME "MotherVoice")  
          
          project(${TARGET_NAME} VERSION 0.12)
          
          set(CMAKE_PREFIX_PATH "C:/Qt/6.8.0/mingw_64")
          
          find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Charts Multimedia)
          
          set(CMAKE_AUTOMOC ON)     
          set(CMAKE_AUTORCC ON)     
          
          if(WIN32)        
              set(WIN_ICON "AEPLab_icon/AEP_logo_3D_original.ico")
          elseif(APPLE)   
              set(MAC_ICON "AEPLab_icon/AEP_logo_3D.icns")
              set_source_files_properties(${MAC_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
          endif()
          
          add_executable(${TARGET_NAME}
              main.cpp
              mainwindow.cpp
              subjectwindow.cpp
              ../../FuhClasses/CWav.cpp
              ../../FuhClasses/FuhClasses.cpp
              ../../FuhClasses/dataMotherVoice.cpp
              ../../FuhClasses/recordMotherVoice.cpp
              ../../FuhClasses/entryMotherVoice.cpp
              resources.qrc
          )
          
          target_sources(${TARGET_NAME} PRIVATE
              mainwindow.h
              subjectwindow.h
              ../../FuhClasses/CWav.h
              ../../FuhClasses/FuhClasses.h
              ../../FuhClasses/dataMotherVoice.h
              ../../FuhClasses/recordMotherVoice.h
              ../../FuhClasses/entryMotherVoice.h
              ../../../xResources/FFTReal/v2.00/Array.h
              ../../../xResources/FFTReal/v2.00/Array.hpp
              ../../../xResources/FFTReal/v2.00/def.h
              ../../../xResources/FFTReal/v2.00/DynArray.h
              ../../../xResources/FFTReal/v2.00/DynArray.hpp
              ../../../xResources/FFTReal/v2.00/FFTReal.h
              ../../../xResources/FFTReal/v2.00/FFTReal.hpp
              ../../../xResources/FFTReal/v2.00/FFTRealFixLen.h
              ../../../xResources/FFTReal/v2.00/FFTRealFixLen.hpp
              ../../../xResources/FFTReal/v2.00/FFTRealFixLenParam.h
              ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.h
              ../../../xResources/FFTReal/v2.00/FFTRealPassDirect.hpp
              ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.h
              ../../../xResources/FFTReal/v2.00/FFTRealPassInverse.hpp
              ../../../xResources/FFTReal/v2.00/FFTRealSelect.h
              ../../../xResources/FFTReal/v2.00/FFTRealSelect.hpp
              ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.h
              ../../../xResources/FFTReal/v2.00/FFTRealUseTrigo.hpp
              ../../../xResources/FFTReal/v2.00/OscSinCos.h
              ../../../xResources/FFTReal/v2.00/OscSinCos.hpp
          )
          
          add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00) 
          
          if(NOT CMAKE_BUILD_TYPE)
              set(CMAKE_BUILD_TYPE Release)
          endif()
          
          target_include_directories(${TARGET_NAME} PRIVATE
              ../../FuhClasses
              ../../../xResources/FFTReal/v2.00
          )
          
          target_link_libraries(${TARGET_NAME} PRIVATE
              Qt6::Core
              Qt6::Gui
              Qt6::Widgets
              Qt6::Charts
              Qt6::Multimedia
          )
          
          install(FILES
              AEPLab_icon/AEP_logo_3D_original.ico
              AEPLab_icon/AEP_logo_3D.icns
              DESTINATION .
          )
          
          I added the icon into a Qt Resource File (namely "resources.qrc"). Here is a screenshot of this Qt Resource File.

          icon_screenshot.png

          I used the setWindowIcon() to display an icon. Here is the script snippet that I created for this purpose.
          setWindowIcon(QIcon(":/AEPLab_icon/AEP_logo_3D_original.ico"));
          
          Here is a screenshot, showing that my lab's icon is displayed properly in the top-left corner of the window. Thank you!

          icon_working_Qt6.png

          Although the icon is displayed properly in the top-left corner of a window, this icon is NOT displayed as the icon of the executable file. That is, the icon of the MotherVoice.exe file is still a generic icon (instead of my lab's icon).

          For clarity, here is a screenshot showing the generic icon of the *MotherVoice.exe"

          Icon_executable_generic.png

          What should I do to correct this mistake?

          Any comments or suggestions will be appreciated!

          1 Reply Last reply
          0
          • Christian EhrlicherC Offline
            Christian EhrlicherC Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #5

            You have to create a .rc file and add it to your sources.
            E.g. here: https://forum.qt.io/topic/111141/setting-the-application-icon

            For cmake you can simply add the .rc files to your sources. cmake is calling the correct programs afterwards.

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            B 1 Reply Last reply
            1
            • Christian EhrlicherC Christian Ehrlicher

              You have to create a .rc file and add it to your sources.
              E.g. here: https://forum.qt.io/topic/111141/setting-the-application-icon

              For cmake you can simply add the .rc files to your sources. cmake is calling the correct programs afterwards.

              B Offline
              B Offline
              beginner123
              wrote on last edited by
              #6

              @Christian-Ehrlicher

              I did add my lab's icon in a Qt Resource File, namely "resources.qrc" (as shown in a screenshot above). When I used QMake, I also had a .pro file, namely "MotherVoice.pro". In my MotherVoice.pro file, I did include a command (similar to the example that you referred to through an example link above). And yes. It worked when using a Qt Resource File ("resources.qrc") and a QMake .pro file ("MotherVoice.pro"). My lab's icon was displayed as the icon of the executable. That was correct.

              However, I am now trying to use CMake (instead of QMake). First of all, do I have to use a regular .rc file (instead of a .qrc file) for CMake? Could this be the isue?

              If a .qrc file is allowed with CMake, where should I go to specify the icon for the executable? On the other hand, if a .qrc file is not allowed with CMake, I would be happy to learn and create a regular .rc file for this project. I just need clarification so that I know how to proceed.

              1 Reply Last reply
              0
              • Christian EhrlicherC Offline
                Christian EhrlicherC Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on last edited by
                #7

                .rc and .qrc are two completely different things.
                If you want an app icon in windows explorer you have to use a windows-specific .rc - file.
                Ifyou want resources in your application (e.g. images) and want to include them directly into your executable, you can use the Qt qrc resource file.
                And no, even qmake needed both.

                https://doc.qt.io/qt-6/qmake-variable-reference.html#rc-file
                https://doc.qt.io/qt-6/qmake-variable-reference.html#resources

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                B 1 Reply Last reply
                2
                • Christian EhrlicherC Christian Ehrlicher

                  .rc and .qrc are two completely different things.
                  If you want an app icon in windows explorer you have to use a windows-specific .rc - file.
                  Ifyou want resources in your application (e.g. images) and want to include them directly into your executable, you can use the Qt qrc resource file.
                  And no, even qmake needed both.

                  https://doc.qt.io/qt-6/qmake-variable-reference.html#rc-file
                  https://doc.qt.io/qt-6/qmake-variable-reference.html#resources

                  B Offline
                  B Offline
                  beginner123
                  wrote on last edited by
                  #8

                  @Christian-Ehrlicher

                  Thank you so much for the clarification. I truly appreciate it!

                  Please allow me to reiterate, to ensure that I understand correctly:

                  In the Qt Creator IDE, if I switch to using CMake (i.e., using "CMakeLists.txt"), I MUST create a regular .rc file (instead of a .qrc file) and specify the icon of the executable within this .rc file. Correct?

                  B 1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    As I already wrote it has nothing to do with qmake or cmake. If you want an application icon in windows explorer you have to add a .rc file. With qmake you might also set https://doc.qt.io/qt-6/qmake-variable-reference.html#rc-icons instead passing a rc file afair.

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    1 Reply Last reply
                    2
                    • B beginner123

                      @Christian-Ehrlicher

                      Thank you so much for the clarification. I truly appreciate it!

                      Please allow me to reiterate, to ensure that I understand correctly:

                      In the Qt Creator IDE, if I switch to using CMake (i.e., using "CMakeLists.txt"), I MUST create a regular .rc file (instead of a .qrc file) and specify the icon of the executable within this .rc file. Correct?

                      B Offline
                      B Offline
                      Bonnie
                      wrote on last edited by Bonnie
                      #10

                      @beginner123 This has nothing to do with qrc. When using qmake, if you set RC_ICONS, qmake creates the rc file in the building folder and adds it to the auto-generated Makefile. But cmake doesn't provide such feature., so you need to create it and add it manually.

                      B 1 Reply Last reply
                      3
                      • B Bonnie

                        @beginner123 This has nothing to do with qrc. When using qmake, if you set RC_ICONS, qmake creates the rc file in the building folder and adds it to the auto-generated Makefile. But cmake doesn't provide such feature., so you need to create it and add it manually.

                        B Offline
                        B Offline
                        beginner123
                        wrote on last edited by beginner123
                        #11

                        @Bonnie

                        Thank you so much for the clarification. It helps a lot. This finally makes sense to me now.

                        I will spend some time to learn more about .rc files and to create one, as well as to manually add an icon to the executable.

                        I will be back onto this forum once I have made some progress. It may take me a while though, as I am just a part-time hobbyist in Qt programming.

                        Thanks again!

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved