Я создаю приложение на Qt Creator и C++, которое перечисляет все приложения в системе, индексируя .desktop
файлы из /usr/share/applications
и ~/.local/share/applications
. Почти в каждом пути к значку я не получаю фактический путь, а получаю локальный путь, как в примере приложения Characters, где путь к значку просто org.gnome.Characters
.
Я слышал, что иконки обычно находятся в /usr/share/pixmaps
, но я искал эту иконку и ее не было. Я выполнил поиск по всей системе и нашел несколько экземпляров, большинство из которых находились в /usr/share/icons/Yaru
(он же пакет тем иконок).
Я мог бы проиндексировать пакеты тем как места для поиска иконок, но это ненадежно по двум причинам:
Это было очень хлопотно для одной иконки. Есть ли лучший способ сделать это? Поскольку у меня нет полного пути к иконке, я думаю, что мне придется индексировать тонны мест для иконки, что является ненужной обработкой.
Есть ли хороший способ сделать это, и есть ли другие места расположения значка, которые я должен проверить? Может быть, функция Qt, которая находит иконку по локальному пути :)?
На самом деле это не связано с Ubuntu, поскольку это вопрос программирования Qt, но все же ...
В этом случае используйте QIcon :: fromTheme () . При этом используется путь к теме рабочего стола, который пользователь также видит в меню рабочего стола.
Существует перегруженная версия, в которой вы можете указать резервный значок на случай, если тема рабочего стола не может предоставить значок.
Для моих собственных значков в моем QDirStat я использую скомпилированные значки с использованием системы ресурсов Qt , поэтому мне не нужно полагаться на свою удачу, независимо от того, какой значок доступен; а также убедиться, что все они имеют единообразный вид на случай, если некоторые значки присутствуют в теме, а некоторые нет.
Но в вашем случае вы хотите отображать значки других приложений, поэтому значки темы - это первое место, откуда их загружать. Обратите внимание, что у вас может быть установлено несколько тем значков, которые в какой-то степени перекрывают друг друга, поэтому позволить рабочему столу решить, какую тему использовать, - лучший вариант; в противном случае вы, скорее всего, выберете значок из неправильной темы значка.