【发布时间】:2016-09-28 14:05:00
【问题描述】:
我想要一种跨平台获取系统图标的方法,例如QWidget 的setIcon 方法中的文件夹图标。像这样的:
QWidget *myWidget = new QWidget;
myWidget->setIcon(/*something to get a system icon*/);
这可能吗?如果是,该怎么做?
【问题讨论】:
我想要一种跨平台获取系统图标的方法,例如QWidget 的setIcon 方法中的文件夹图标。像这样的:
QWidget *myWidget = new QWidget;
myWidget->setIcon(/*something to get a system icon*/);
这可能吗?如果是,该怎么做?
【问题讨论】:
使用QFileIconProvider::icon(IconType) 从一小部分类型中获取特定类型的图标。
在您的特定情况下,您需要icon(QFileIconProvider::Folder)。
使用QFileIconProvider::icon(const QFileInfo &) 获取特定目录条目的图标。
在 Linux/X11 上使用 QIcon::fromTheme(const QString &, const QIcon & = QIcon()) 获取主题图标。
【讨论】:
QFileIconProvider 类型的对象才能使用icon 方法。像这样:QFileIconProvider iconProvider; iconProvider.icon(QFileIconProvider::Folder).
我认为您正在寻找QIcon::fromTheme 方法。
例子:
QIcon undoicon = QIcon::fromTheme("edit-undo");
注意:默认情况下,只有 X11 支持主题图标。为了在 Mac 和 Windows 上使用主题图标,您必须在您的
themeSearchPaths()之一中捆绑一个兼容的主题并设置适当的themeName()。
【讨论】:
对于 linux/X11,也许您正在寻找 QMimeDatabase::mimeTypesForFileName 和 QIcon::fromTheme。
【讨论】: