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

标签 macos qt macos-darkmode

我用 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”。

最后,对您的问题进行更直接的思考,但不能保证有效(我认为检测暗模式更改的方法肯定会有效),但可能值得尝试:

  1. 您是否尝试过在所有状态下将 PNG 图标的像素图添加到 QIcon?您可以在这里看到它:https://doc.qt.io/qt-5/qicon.html#addPixmap
  2. 不确定这是否有效,但也许设置作为面具的标志会起作用? https://doc.qt.io/qt-5/qicon.html#setIsMask
  3. 您是否尝试过向 QToolBar 添加小部件而不是操作:https://doc.qt.io/qt-5/qtoolbar.html#addWidget ?也许添加自定义小部件不会使您的图标看起来很糟糕,尽管它们显示的模式如何?当然,请记住,在这种特定情况下,您可能必须创建自己的小部件。

关于macos - 为 macOS 上的 Qt 提供深色模式图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728796/

相关文章:

objective-c - 我的 Mac 应用程序的 NSUserDefaults 来自哪里?

python - Yosemite 上的常见 Python 错误

c++ - 在 Visual Studio Code 中调试使用 makefile 构建的 c++

c++ - 为什么 QMediaGaplessPlaybackControl 不存在?

qt - QAudioInput::byteReady() 和 QIODevice::read() 给出不同的字节数

macos - 深色模式 : NSColor. colorNamed 在某些方法中不会返回正确的颜色

objective-c - 如何手动创建动态(深色/浅色)NSImage 实例?

ios - 在 Xcode 4.5 和 4.6 中调试速度非常慢

visual-studio-2010 - 如何使用 Visual C++ 2010 Express 从 32 位环境为 64 位 Windows 编译 Qt?