在 Linux 上的 Qt 中获取应用程序图标 URL
Get app icon URL in Qt on Linux
我正在尝试获取应用程序的图标(无论哪个图标)。我注意到Qt没有类似GDesktopAppInfo
的东西,因此我尝试通过/usr/share/applications/appname.desktop
QSettings
。这已经是一个问题,因为桌面文件可能不存在。无论如何,进一步提取Icon
密钥。现在我不知道如何找到网址(请注意,我需要网址,当然我可以做一个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
- 具有可调用的 C++ 函数,该函数向 QML 公开
QUrl
- 在 QML 中,将
Image
的source
属性设置为getIconUrl("Target App")
其中 4. 看起来像
QUrl MyClass::getIconUrl(QString appName)
{
// get iconPath from appName
return QUrl::fromLocalFile(iconPath);
}
如果事情正在运行,您可以添加对
- 多个 .desktop 位置(可能有几个左右)
- 添加对相对路径的支持
- 添加对 XPM 文件的支持
您可以使用 QIcon::fromTheme(QString iconName) 来查找图标。它大部分时间都有效,但不如 gtk 可靠
相关文章:
- 如何为 C++ Visual Studio 2019 指定应用程序图标?
- 为什么从文件获取图标时应用程序有时会崩溃?
- 为没有qmake/VS的Qt Windows应用程序设置.exe图标
- 如何向控制台应用程序添加图标
- 获取应用程序图标时出现问题
- 隐藏自定义应用程序窗口,但应在任务栏上显示应用程序图标(不是作为托盘图标)
- 在任务管理器中修改应用程序图标,而不是在系统托盘中
- 如何在OS X上的Qt应用程序中设置应用程序图标,足以进行分发
- 在Qt Creator中设置OSX的应用程序图标
- 使用CMake设置应用程序图标
- 如何在任务管理器中更改应用程序图标
- 在 Linux 上的 Qt 中获取应用程序图标 URL
- 如何在Qt中设置应用程序图标
- 应用程序图标Visual Studio 2010 c++
- 没有找到为windows应用程序设置应用程序图标的问题.rc文件
- 如何以编程方式将应用程序图标固定在windows 8的地铁启动屏幕上
- Qt4应用程序图标没有出现在Windows任务栏上
- Qt 5.0.1 中未显示应用程序图标
- 在用户关闭bb10(z10)应用程序时,访问主屏幕上的应用程序图标需要很长时间
- Qt5.6设置应用程序图标(Linux)