【问题标题】:Use a system icon in the setIcon method of QWidget在 QWidget 的 setIcon 方法中使用系统图标
【发布时间】:2016-09-28 14:05:00
【问题描述】:

我想要一种跨平台获取系统图标的方法,例如QWidgetsetIcon 方法中的文件夹图标。像这样的:

QWidget *myWidget = new QWidget;
myWidget->setIcon(/*something to get a system icon*/);

这可能吗?如果是,该怎么做?

【问题讨论】:

    标签: c++ qt icons


    【解决方案1】:
    • 使用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).
    • @DonaldDuck 我没有另外说 :) 我给出的是完全限定的方法名称 - 我并不是暗示这些是静态方法,谁告诉你的 :)
    • 按照你写的方式,看起来它们应该用作静态方法。最好发布一个带有如何使用它的具体示例的代码。第一次看到这个的时候,我还以为是静态方法,直到编译器给我报错才明白。
    【解决方案2】:

    我认为您正在寻找QIcon::fromTheme 方法。

    例子:

    QIcon undoicon = QIcon::fromTheme("edit-undo");
    

    注意:默认情况下,只有 X11 支持主题图标。为了在 Mac 和 Windows 上使用主题图标,您必须在您的 themeSearchPaths() 之一中捆绑一个兼容的主题并设置适当的 themeName()

    【讨论】:

      【解决方案3】:

      对于 linux/X11,也许您正在寻找 QMimeDatabase::mimeTypesForFileNameQIcon::fromTheme

      参考https://stackoverflow.com/a/45739529/5785726的例子

      【讨论】:

        猜你喜欢
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-07-27
        • 1970-01-01
        • 2012-02-14
        相关资源
        最近更新 更多