Pull to refresh
0

Кроссплатформенное приложение на Qt: Иконка

Reading time 2 min
Views 23K

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

Для начала следует подготовить исходники в разных разрешениях (Windows, OS X, Linux), которые мы будем запекать в файл иконки. Необходимо добавить, что разрешения для OS X в таблице ниже условны, и в идеале иконки одинакового размера должны быть разной степени детализации, для обычных и Retina-дисплеев.
16
32
48 64
128 256
512
1024
OS X*
* * * * * * *
Linux * * * * *
Windows * * * *

Windows

Для Windows в документации рекомендуется использовать редактор иконок из Visual Studio, однако я так и не смог его найти в express версии 2010 года. Вместо этого можно использовать специализированную утилиту, или Gimp. Во втором случае, просто добавляем на холст исходники (как слои, в порядке убывания размеров), экспортируем в формат .ico.
Далее нужно создать пустой текстовый файл с расширением .rc, записать в него строку вида:
IDI_ICON1 ICON DISCARDABLE "myapp.ico"
В .pro файле добавить строку:
win32:RC_FILE = myapp.rc
Bing!

OS X

Меньше всего возни оказалось с OS X, для которой, кроме стандартной консольной* утилиты, есть удобные инструменты с «интуитивно понятным интерфейсом». Перетаскиваем нужные исходники на свои места, сохраняем готовую иконку.



В .pro файле необходимо дописать строку:
macx:ICON = $${PWD}/myapp.icns
Fix: Если иконка все еще не появилась, стоит снести бандл руками (простая пересборка может не сработать).

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

Оглавление цикла

P.S. Спасибо wholeman за дополнение.
Tags:
Hubs:
+10
Comments 9
Comments Comments 9

Articles

Information

Website
istodo.ru
Registered
Founded
Employees
2–10 employees
Location
Россия