Я пытаюсь получить значок приложения (не важно, какой из них). Я заметил, что Qt не имеет ничего похожего на GDesktopAppInfo
поэтому я попытался получить его через QSettings
из /usr/share/applications/appname.desktop
. Это уже проблема, потому что файл рабочего стола, возможно, не существует. В любом случае, идем дальше, чтобы извлечь Icon
. Теперь я не знаю, как найти URL-адрес (обратите внимание, что мне нужен URL-адрес, я мог бы сделать QIcon
, но мне нужно экспортировать его в QML, что будет означать другой класс QQuickImageProvider
, во всяком случае, я не хочу идти таким путем), Возможно ли это, или это вышеупомянутое QQuickImageProvider
мое единственное решение?
Вот небольшой справочник, который поможет вам найти свой путь. Помните об этом: начните с основного случая, получите код и продолжите его в более сложные случаи позже.
Пока давайте предположим следующее:
/usr/share/applications
Вход: Имя приложения "git-cola"
/usr/share/applications/git-cola.desktop
Icon
iconPath
, например /usr/share/git-cola/icons/git.svg
QUrl
для QMLsource
Image
для getIconUrl("Target App")
где 4. выглядит что-то вроде
QUrl MyClass::getIconUrl(QString appName)
{
// get iconPath from appName
return QUrl::fromLocalFile(iconPath);
}
Если все работает, вы можете добавить поддержку для
Вы можете использовать QIcon :: fromTheme (QString iconName), чтобы найти значок. Он работает большую часть времени, но он не так надежен, как gtk