Arrow
Arrow20 января 2017 г. 23:04

Иконка исполняемого файла

Иконки *.ico, исполняемый файл *.exe

Написал программу, только возник один вопрос:

Есть ли в Qt возможность назначить иконку для исполняемого файла программы?

Нашел несколько способов это сделать - они связаны с файлами ресурсов и файлом *.pro, но не работают.

В окне и на панели задач иконка отображается - установил через setWindowIcon.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

15
Evgenii Legotckoi
  • 20 января 2017 г. 23:22

Ну вообще для Windows нужно прописать в pro файле следующее

win32: RC_ICONS = $$PWD/images/myappico.ico

И при этом обязательно расширение должно быть ico . Ну и добавить соответственно эту иконку в файл ресурсов. У меня в одном проекте так сделано и всё работает.

Может быть Вы просто не совсем верно путь указали к файлу с иконкой?

    Arrow
    • 21 января 2017 г. 2:06

    Такого способа я не встречал. Спасибо, доберусь до Windows попробую.

      Evgenii Legotckoi
      • 21 января 2017 г. 10:51

      Вообще я этот способ брал из официальной документации. И с другими не доводилось встречаться. Единственное, там под другие платформы сложнее делается, но я ими и не заморачивался, поскольку с Mac OS не работаю, а под Linux ничего такого не писал, чтобы сильно влезать в API X-сервера.

        Arrow
        • 24 января 2017 г. 0:33
        • Ответ был помечен как решение.

        Проверил все работает, иконку к исполняемому файлу подключил через:

        win32: RC_ICONS = $$PWD/images/app.ico
        

        Если понадобится, дополнительную информацию в исполняемый файл можно добавить так:

        win32:{
            VERSION = 1.0.0
            QMAKE_TARGET_COMPANY = Название компании
            QMAKE_TARGET_PRODUCT = Название программы
            QMAKE_TARGET_DESCRIPTION = Описание программы
            QMAKE_TARGET_COPYRIGHT = Автор
        }
        
          Ruslan Polupan
          • 12 октября 2017 г. 16:43

          Добавил в *.pro

          win32:RC_ICONS = C:/Develop/HotlineDesktop/resource/Icon/hotline.ico
          В фале ресурсов прописал.

          При сборке ругается
          C:\Develop\build-HotlineDesktop-Desktop_Qt_5_9_1_MinGW_32bit-Release\HotlineDesktop_resource.rc:2: ошибка: when writing output to : No such file or directory
          
          Причем на строку в скрине. :-)

          чет я задумался....

            Evgenii Legotckoi
            • 12 октября 2017 г. 17:56

            мм.. Может, всё-таки закинуть иконку через относительный путь теневой сборки? То есть через $$PWD ?

              Ruslan Polupan
              • 13 октября 2017 г. 17:05

              Такой вариант:

              message($$PWD)
              win32:RC_ICONS = $$PWD:/resource/Icon/hotline.ico
              При сборке выводит
              Project MESSAGE: C:/Develop/HotlineDesktop
              Но ошибка та же....
                Evgenii Legotckoi
                • 13 октября 2017 г. 17:09

                Вместо этого

                win32:RC_ICONS = $$PWD:/resource/Icon/hotline.ico
                Нужно так
                win32:RC_ICONS = $$PWD/resource/Icon/hotline.ico
                Двоеточие здесь лишнее
                  Ruslan Polupan
                  • 13 октября 2017 г. 17:30

                  Результат тот же.

                    Evgenii Legotckoi
                    • 13 октября 2017 г. 17:42
                    • (ред.)

                    А в pro файле есть подключение этого ресурсного файла через RESOURCES += ?

                    Хотя, что я говорю, должно быть, Вы же добавили иконку в ресурсный файл.
                    Такое ощущение, что как-то криво подключён в проект ресурсный файл ... (здесь должен быть недоумевающий смайлик) 
                      Ruslan Polupan
                      • 28 октября 2017 г. 12:59

                      Создал новое приложение все работает :-)

                        Evgenii Legotckoi
                        • 28 октября 2017 г. 16:08

                        Мда... вот такое поведение QMake меня порой и выбешивает, что он не в состоянии нормально подключить ресурсы иногда или ещё что-то. Но вся проблема в том, что нормальной поддержки CMake в Qt Creator нет, а в CLion нет нормальной поддержки функцинонала Qt в плане авторефакторинга...

                          IscanderChe
                          • 23 июня 2018 г. 2:22
                          Для винды так:
                          somefile.rc
                          =========
                          IDI_ICON1   ICON    "icon.ico"

                          someproject.pro
                          win32 {
                          RC_FILE += somefile.rc
                          OTHER_FILES += somefile.rc
                          }
                          А как для linux сделать то же самое?
                            Ruslan Polupan
                            • 23 июня 2018 г. 11:27

                            Взято отсюда. https://habr.com/company/istodo/blog/215079/

                            Linux

                            Согласно спецификации , Linux не требует преобразовывать исходники иконки в какие-либо сборки, нужно просто скопировать (при установке) файлы в поддиректории вида:
                            /usr/share/icons/hicolor/RxR/apps, где R — разрешение иконки
                            или
                            /usr/share/icons/hicolor/scalable/apps — если вы хотите установить векторное изображение в формате .svg
                            Однако это еще не все, каждая тема иконок имеет свой кэш, и если его не обновить — увидеть новую иконку не получится. Кэш автоматически обновляется при штатной установке пакетов, либо можно сделать это вручную, выполнив команду:
                            gtk-update-icon-cache /usr/share/icons/hicolor
                            Нужно сказать, что связывание конкретной иконки с приложением идет в файле /usr/share/applications/myapp.desktop , в котором необходимо заполнить соответствующее поле (название иконки). Создание и заполнение обязательных полей этого файла будет рассмотрено в одной из следующих статей, посвященной сборке и распространению дистрибутива программы.
                              IscanderChe
                              • 25 июня 2018 г. 23:38

                              Спасибо!

                                Комментарии

                                Только авторизованные пользователи могут публиковать комментарии.
                                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                Ua

                                Qt - Тест 001. Сигналы и слоты

                                • Результат:84баллов,
                                • Очки рейтинга4
                                Ua

                                Qt - Тест 001. Сигналы и слоты

                                • Результат:42баллов,
                                • Очки рейтинга-8
                                ОК

                                Qt - Тест 001. Сигналы и слоты

                                • Результат:47баллов,
                                • Очки рейтинга-6
                                Последние комментарии
                                ИМ
                                Игорь Максимов22 ноября 2024 г. 21:51
                                Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                Evgenii Legotckoi
                                Evgenii Legotckoi31 октября 2024 г. 23:37
                                Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                A
                                ALO1ZE19 октября 2024 г. 17:19
                                Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                ИМ
                                Игорь Максимов5 октября 2024 г. 16:51
                                Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                d
                                dblas55 июля 2024 г. 20:02
                                QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                Сейчас обсуждают на форуме
                                f
                                firstlunoxod15 февраля 2025 г. 13:46
                                Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                                Дмитрий
                                Дмитрий3 февраля 2025 г. 16:24
                                Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                                NW
                                Nayo Wai30 января 2025 г. 19:22
                                не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                                n
                                nkly3 января 2025 г. 12:52
                                Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                                M
                                Marsel17 августа 2023 г. 0:26
                                OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

                                Следите за нами в социальных сетях