我用 Qt 5.13 编写的应用程序使用 QToolBar
。要在其上放置图标,我的源代码中有这一行:
const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));
这很有效,并且当激活暗模式时应用程序外观会发生变化。图标会自动处理为看起来倒转,但这效果不佳,它们看起来很糟糕。
有没有办法提供 Qt 用于暗模式的图标?或者,有没有办法阻止 Qt 反转我的图标,因为它们在黑暗模式下也能很好地工作?
最佳答案
解决所描述问题的一种方法是引入一个用于暗模式更改的监听器,然后在 QToolBar 中相应地更改图标。正如我从 QToolBar 文档中看到的,最简单的方法是调用 QToolBar::clear(),然后再次将所有操作添加在一起。
现在是关于检测暗模式变化的部分。这部分可能有点棘手,但它是可行的。基本上,您应该在 Objective C++ 中引入 native 代码(因此,您将能够使用命名空间、 header 等,即 C++ 中的内容),然后添加 Objective C 代码,以添加暗模式更改的监听器。您可能想要添加监听器的参数名称是“AppleInterfaceThemeChangedNotification”。
最后,对您的问题进行更直接的思考,但不能保证有效(我认为检测暗模式更改的方法肯定会有效),但可能值得尝试:
- 您是否尝试过在所有状态下将 PNG 图标的像素图添加到 QIcon?您可以在这里看到它:https://doc.qt.io/qt-5/qicon.html#addPixmap
- 不确定这是否有效,但也许设置作为面具的标志会起作用? https://doc.qt.io/qt-5/qicon.html#setIsMask
- 您是否尝试过向 QToolBar 添加小部件而不是操作:https://doc.qt.io/qt-5/qtoolbar.html#addWidget ?也许添加自定义小部件不会使您的图标看起来很糟糕,尽管它们显示的模式如何?当然,请记住,在这种特定情况下,您可能必须创建自己的小部件。
关于macos - 为 macOS 上的 Qt 提供深色模式图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728796/