C++ 在Linux上的Qt中获取应用程序图标URL
我正在尝试获取一个应用程序的图标(不管是哪一个)。我注意到Qt没有类似于C++ 在Linux上的Qt中获取应用程序图标URL,c++,linux,qt,icons,qml,C++,Linux,Qt,Icons,Qml,我正在尝试获取一个应用程序的图标(不管是哪一个)。我注意到Qt没有类似于GDesktopAppInfo的东西,因此我尝试从/usr/share/applications/appname.desktop通过QSettings获取它。这已经是个问题了,因为桌面文件可能不在那里。无论如何,继续提取图标键。现在我不知道如何找到url(请注意,我需要url,当然我可以制作一个QIcon,但我需要将它导出到QML,这意味着另一个QQuickImageProvider类,无论如何,我不想这样做)。这是可能的,
GDesktopAppInfo
的东西,因此我尝试从/usr/share/applications/appname.desktop
通过QSettings
获取它。这已经是个问题了,因为桌面文件可能不在那里。无论如何,继续提取图标
键。现在我不知道如何找到url(请注意,我需要url,当然我可以制作一个QIcon
,但我需要将它导出到QML,这意味着另一个QQuickImageProvider
类,无论如何,我不想这样做)。这是可能的,还是前面提到的QQuickImageProvider
是我唯一的解决方案?这里有一个小指南,可以帮助您找到自己的方法。记住一件事:从基本情况开始,让代码运行,然后将其扩展到更困难的情况
现在,让我们假设以下情况:
- .桌面文件位于
/usr/share/applications
- 应用程序图标为SVG或PNG格式
- 应用程序图标路径是绝对路径
- 应用程序名称为小写,不包含空格
/usr/share/applications/git-cola.desktop
图标
值iconPath
,例如/usr/share/git-cola/icons/git.svg
QUrl
的图像的源属性设置为getIconUrl(“目标应用”)
QUrl MyClass::getIconUrl(QString appName)
{
// get iconPath from appName
return QUrl::fromLocalFile(iconPath);
}
如果正在运行,您可以添加对的支持
- 多个.desktop位置(可能有几个左右)
- 添加对相对路径的支持
- 添加对XPM文件的支持