20 января 2017 г. 17:04

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

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

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

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

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

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

Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
15

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

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

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

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

1

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

0

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

0

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

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

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

win32:{
    VERSION = 1.0.0
    QMAKE_TARGET_COMPANY = Название компании
    QMAKE_TARGET_PRODUCT = Название программы
    QMAKE_TARGET_DESCRIPTION = Описание программы
    QMAKE_TARGET_COPYRIGHT = Автор
}
1

Добавил в *.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
Причем на строку в скрине. :-)

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

0

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

0

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

message($$PWD)
win32:RC_ICONS = $$PWD:/resource/Icon/hotline.ico
При сборке выводит
Project MESSAGE: C:/Develop/HotlineDesktop
Но ошибка та же....
0

Вместо этого

win32:RC_ICONS = $$PWD:/resource/Icon/hotline.ico
Нужно так
win32:RC_ICONS = $$PWD/resource/Icon/hotline.ico
Двоеточие здесь лишнее
0

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

0

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

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

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

0

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

0
Для винды так:
somefile.rc
=========
IDI_ICON1   ICON    "icon.ico"

someproject.pro
win32 {
RC_FILE += somefile.rc
OTHER_FILES += somefile.rc
}
А как для linux сделать то же самое?
0

Взято отсюда. 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 , в котором необходимо заполнить соответствующее поле (название иконки). Создание и заполнение обязательных полей этого файла будет рассмотрено в одной из следующих статей, посвященной сборке и распространению дистрибутива программы.
0

Спасибо!

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
25 мая 2019 г. 16:20
Андрей Янкович

C++ - Тест 001. Первая программа и типы данных

  • Результат:93баллов,
  • Очки рейтинга8
m
19 мая 2019 г. 1:49
mahhaki

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

  • Результат:78баллов,
  • Очки рейтинга2
S
17 мая 2019 г. 13:14
SunBro

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

  • Результат:42баллов,
  • Очки рейтинга-8
Последние комментарии
21 мая 2019 г. 20:10
Дмитрий

Приветствую! Я думаю дойдёт и до этого, но пока изучать его у меня нет желания.
20 мая 2019 г. 19:20
Евгений Легоцкой

Добрый день! Вы не думали разместить репозиторий проекта на GitHub?
P.
18 мая 2019 г. 14:03
PELMYACH .

Спасибо большое! Вскоре буду разбираться!
18 мая 2019 г. 9:13
Евгений Легоцкой

Добрый день! Отнимать значение общего счётчика можно в деструкторе класса кнопки QDynamicButton::~QDynamicButton(){ ResID--;} При этом я бы ещё переустанавливал значения вс...
P.
14 мая 2019 г. 22:33
PELMYACH .

Здравствуйте!А не подскажите, как можно при удалении какой либо кнопки, у щётчика отнять значение?Дабы например четвёртой кнопке соответствовал ID 4, а не 5 скажем
Сейчас обсуждают на форуме
24 мая 2019 г. 6:48
Евгений Легоцкой

Если там будут только перечисления внутри namespace, то жа, достаточно будет заголовочного файла
24 мая 2019 г. 6:28
Андрей Янкович

работает любой http сервер, и можно использовать обсалютно любой портпример <RemoteRepositories> <Repository> <Url>http://178.124.160.6:3030/A/B&l...;
23 мая 2019 г. 14:40
Михаиллл

Попробовал сделать этот запрос по http и получил json файл. request.setUrl(QUrl("https://jsonplaceholder.typicode.com/todos/1")); Как Вы думаете, почему https не работает и как это и...
23 мая 2019 г. 10:42
Михаиллл

Спасибо, помогло.
23 мая 2019 г. 6:31
Евгений Легоцкой

Для задач и граф-то не нужен. Достаточно будет таблицы в локальной базе данных SQLite, в которой указывается задача, время и т.д. В этом разделе есть примеры по работа с базой д...

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB