我正在尝试获取应用程序的图标(无论是哪一个)。我注意到 Qt 没有类似 GDesktopAppInfo
的东西,因此我尝试通过 /usr/share/applications/appname.desktop
中的 QSettings
获取它.这已经是一个问题,因为桌面文件可能不存在。无论如何,进一步提取 Icon
键。现在我不知道如何找到 url(注意我需要 url,确定我可以制作一个 QIcon
,但我需要将它导出到 QML,这意味着另一个 QQuickImageProvider
类,无论如何,我不想那样做)。有可能吗,或者上述 QQuickImageProvider
是我唯一的解决方案吗?
最佳答案
这里有一个小指南,可以帮助您找到适合自己的方式。请牢记一件事:从基本案例开始,让代码运行起来,然后将其扩展到更困难的案例。
现在,让我们假设如下:
- .desktop 文件位于
/usr/share/applications
- 应用程序图标为 SVG 或 PNG 格式
- 应用程序图标路径是绝对的
- 应用名称小写且不含空格
输入:应用名称“git-cola”
- 阅读
/usr/share/applications/git-cola.desktop
- 使用 QRegularExpression获取
Icon
值 - 你得到一个绝对的
iconPath
,例如/usr/share/git-cola/icons/git.svg
- 有一个invokable C++ function将
QUrl
暴露给 QML - 在 QML 中,将
Image
的source
属性设置为getIconUrl("Target App")
哪里 4. 看起来像
QUrl MyClass::getIconUrl(QString appName)
{
// get iconPath from appName
return QUrl::fromLocalFile(iconPath);
}
如果一切正常,您可以添加对
的支持- 多个 .desktop 位置(可能有几个)
- 添加对相对路径的支持
- 添加对 XPM 文件的支持
关于c++ - 在 Linux 上的 Qt 中获取应用程序图标 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626547/