首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为macOS上的Qt提供深色模式图标

为macOS上的Qt提供深色模式图标
EN

Stack Overflow用户
提问于 2019-08-30 22:37:02
回答 2查看 617关注 0票数 2

我用Qt5.13编写的应用程序使用QToolBar。为了在上面放置图标,我在我的源代码中有这一行:

代码语言:javascript
复制
const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));

这可以很好地工作,并且当暗模式被激活时,应用程序的外观会发生变化。这些图标被自动处理成反转的样子,但效果并不好,它们看起来很糟糕。

有没有办法提供Qt在黑暗模式下使用的图标?或者,有没有办法阻止Qt颠倒我的图标,因为它们在黑暗模式下也会工作得很好?

EN

回答 2

Stack Overflow用户

发布于 2019-09-02 22:25:50

解决上述问题的一种方法是引入一个用于更改暗模式的侦听器,然后相应地更改QToolBar中的图标。正如我在QToolBar文档中看到的,实现此目的的直接方法是调用QToolBar::clear(),然后再次将所有操作添加到一起。

现在关于检测暗模式的部分发生了变化。这一部分可能有点棘手,但它是可行的。基本上,您应该在Objective C++中引入本机代码(因此,您将能够使用名称空间、头文件等,即来自C++的东西),然后添加Objective C代码,该代码添加用于暗模式更改的侦听器。您可能要向其中添加监听程序的参数的名称为"AppleInterfaceThemeChangedNotification“。

最后,对你的问题有更直接的想法,但不能保证有效(我认为检测暗模式变化的方法肯定有效),但可能值得一试:

  1. 你有没有尝试在所有状态下将你的PNG图标的像素图添加到QIcon?你可以在这里看到:https://doc.qt.io/qt-5/qicon.html#addPixmap
  2. Not确定这是否有效,但也许设置掩码标志会有什么作用?https://doc.qt.io/qt-5/qicon.html#setIsMask
  3. Have你尝试将小部件而不是操作添加到QToolBar:https://doc.qt.io/qt-5/qtoolbar.html#addWidget?也许添加自定义窗口小部件不会让你的图标看起来很可怕,尽管它们显示的是不同的模式?当然,请记住,在这种特定情况下,您可能需要创建自己的小部件。
票数 1
EN

Stack Overflow用户

发布于 2020-07-22 21:53:48

捆绑两组图标,并在调色板更改时在它们之间切换。

代码语言:javascript
复制
void MainWindow::changeEvent(QEvent *event)
{
#ifdef Q_OS_MACOS
    // These aren't "examples". They're literally the actual values.
    constexpr int OSX_LIGHT_MODE = 236;
    constexpr int OSX_DARK_MODE = 50;

    QStringLiteral LIGHT_THEME{"breeze"};
    QStringLiteral DARK_THEME{"breeze-dark"};

    if (event->type() == QEvent::PaletteChange) {
        auto bg = palette().color(QPalette::Active, QPalette::Window);
        // Calling setThemeName changes every visible icon, instantly.
        if (bg.lightness() == OSX_LIGHT_MODE) {
            QIcon::setThemeName(LIGHT_THEME);
        } else {
            QIcon::setThemeName(DARK_THEME);
        }
    }
#else
    Q_UNUSED(event)
#endif
}

至于如何捆绑图标:我不打算深入讨论,但这里有一个很好的指南:

A Guide to Using Icon Themes in Qt on All Platforms

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57728796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档