Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Application Icon (Qt Quick, Qt 6.2, CMake, Linux)
Forum Updated to NodeBB v4.3 + New Features

Application Icon (Qt Quick, Qt 6.2, CMake, Linux)

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
qt quickqguiapplicationcmakelinux desktop
3 Posts 3 Posters 2.4k Views 1 Watching
  • 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.
  • R Offline
    R Offline
    R4ckh4m
    wrote on 17 Nov 2022, 20:53 last edited by
    #1

    Hi,

    I have the problem setting the icon of my Qt Quick App. (Top left corner)

    It is a QGuiApplication.

    Using Qt 6.2 LTS with CMake on Linux Fedora KDE.

    I already have tried multiple "Guides" from the forum but no luck -(

    This is what I have:

    CMakeLists.txt:

    cmake_minimum_required(VERSION 3.16)
    
    project(BUL VERSION 0.1 LANGUAGES CXX)
    
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
    
    qt_add_executable(appBUL
        main.cpp
    )
    
    qt_add_qml_module(appBUL
        URI BUL
        VERSION 1.0
        QML_FILES main.qml 
    )
    
    set_target_properties(appBUL PROPERTIES
        MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
        MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
        MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
        MACOSX_BUNDLE TRUE
        WIN32_EXECUTABLE TRUE
    )
    
    target_link_libraries(appBUL
        PRIVATE Qt6::Quick)
    
    install(TARGETS appBUL
        BUNDLE DESTINATION .
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
    

    main.cpp:

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    
    #include <QIcon>
    
    //   #include <QPalette>
    
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
    //    app.setWindowIcon(QIcon("/images/logo_square.png"));
    //    app.setWindowIcon(QIcon("/images/logo_square.ico"));
    
    //    QGuiApplication::setWindowIcon(QIcon("/images/logo_square.png"));
    
    //    app.setWindowIcon(QtGui.QIcon('/images/logo_square.png'))
    
    
    
        QQmlApplicationEngine engine;
        const QUrl url(u"qrc:/BUL/main.qml"_qs);
        QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                         &app, [url](QObject *obj, const QUrl &objUrl) {
            if (!obj && url == objUrl)
                QCoreApplication::exit(-1);
        }, Qt::QueuedConnection);
        engine.load(url);
    
        return app.exec();
    }
    

    main.qml:

    import QtQuick
    
    import QtQuick.Controls 6.3             // Added via "Design" Version 6.3 ???
    
    
    ApplicationWindow {                     // Using ApplicationWindow instead of Window so I can use menuBar
        width: 1000
        height: 800
        visible: true
        title: qsTr("BUL Unofficial Linux")
    
        menuBar: MenuBar {
            Menu { title: qsTr("BUL")
                Menu { title: qsTr("Accounts")
                    Action { text: qsTr("Online") }
                    Action { text: qsTr("Offline") }
                }
                Action { text: qsTr("Settings") }
    
    //            Action { text: qsTr("&Save") }
    //            Action { text: qsTr("Save &As...") }
    
                MenuSeparator { }
    
                Action { text: qsTr("Quit") }
            }
    
                Menu {
                    title: qsTr("Color")
                    Action { text: qsTr("Red") }
                    Action { text: qsTr("Green") }
                    Action { text: qsTr("Blue") }
                }
    
                Menu {
                    title: qsTr("Shape")
                    Action { text: qsTr("Round") }
                    Action { text: qsTr("Square") }
                    Action { text: qsTr("Triangle") }
                }
    
                Menu {
                    title: qsTr("Alerts")
                    Action { text: qsTr("Today") }
                    Action { text: qsTr("Yesterday") }
                }
    
                Menu { title: qsTr("Help")
                    Action { text: qsTr("About") }
                }
        }
    }
    

    I have the logo/icon as .png & .ico within a folder "images" but both don't work, also does the pixel size matter ?

    Any help or pointing me to correct docs would be very nice -)

    Thanks.

    1 Reply Last reply
    0
    • L Offline
      L Offline
      lemons
      wrote on 23 Nov 2022, 14:19 last edited by
      #2

      assuming it is the same in Qt 6.2 as in Qt 5.15

      main app icon:

      // main.cpp
      // path to image of .qrc file
      app.setWindowIcon(QIcon(":/images/logo_square.png"));
      

      for the interactive app icon (e.g. on Ubuntu in the top right corner, on Windows bottom right corner):

      // main.qml
      
      SystemTrayIcon {
          id: appIconWithContextMenu
          visible: true
          // url to file inside of .qrc
          icon.source: "qrc:/images/logo_square.png"
          tooltip: "My App Name"
      
          menu: Menu {
              MenuItem {
                  text: qsTr("Quit")
                  onTriggered: Qt.quit()
              }
              MenuItem {
                  text: qsTr("Some Action")
                  onTriggered: {
                  	// e.g. trigger a synchronization feature or anything else
                  }
              }
          }
      }
      
      1 Reply Last reply
      0
      • U Offline
        U Offline
        usef
        wrote on 30 Apr 2023, 08:05 last edited by usef
        #3

        To add an icon to your qt quick app just follow these 2 easy steps:

        1. open the .qrc file where you have added your static images.

        If you don't have a qrc file in your project then do the following.

        This is the GUI way.
        ->Open your project in qt creator.
        ->Add new qt resources file, then open this file in your editor
        ->Press add files button and search and select your icon.
        ->Save the qrc file.

        Text Editor Way
        ->Open your qrc file in your favorite text editor and add the following lines.

        <RCC>
            <qresource prefix="/">
                 <file>images/logo.png</file>
            </qresource>
        </RCC>
        

        Note the qrc file must be added in the CMakeLists.txt file if you are using cmake or .pro file if you are using qmake.

        1. Open your main.cpp
        #include <QGuiApplication>
        #include <QIcon>
        
        int main(int argc, char** argv) {
            QGuiApplication app(argc, argv);
            QGuiApplication::setWindowIcon(QIcon(":/images/logo.png"));
            // next do whatever is needed.
        }
        
        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