macos - 为 macOS 上的 Qt 提供暗模式图标
问题描述
我用 Qt 5.13 编写的应用程序使用QToolBar
. 要在其上放置图标,我的源代码中有这一行:
const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));
这很好用,当激活暗模式时,应用程序的外观会发生变化。图标会自动处理以看起来倒置,但效果不佳,它们看起来非常糟糕。
有没有办法提供 Qt 用于暗模式的图标?或者,有没有办法阻止 Qt 反转我的图标,因为它们在黑暗模式下也能很好地工作?
解决方案
解决所描述问题的一种方法是引入暗模式更改的侦听器,然后在 QToolBar 中相应地更改图标。正如我从 QToolBar 文档中看到的那样,直接的方法是调用 QToolBar::clear(),然后再次将所有操作添加到一起。
现在关于检测暗模式的部分发生了变化。这部分可能有点棘手,但它是可行的。基本上,您应该在Objective C++ 中引入本机代码(因此,您将能够使用命名空间、标头等,即来自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 ?也许添加自定义小部件不会使您的图标看起来很糟糕,尽管它们正在显示模式?当然,请记住,在这种特定情况下,您可能必须创建自己的小部件。
推荐阅读
- sql - SQL 计算列中的值
- regex - 十进制和 10^-3 的正则表达式
- arrays - 运行时错误“9”:下标超出范围?
- javascript - 使用jquery sql插入多行并且php不起作用
- python - 是否可以在 Gitlab CI 上运行 X11?
- javascript - 使用 Firebase 进行异步/等待
- .net - .NET Core:放置一个布尔值而不创建模型
- python - 打开 CV (python) 我的代码存在 imread 问题。它没有按预期工作所有输出都为零
- eslint - 将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”
- javascript - Discord.js 从 JSON 文件中获取数据返回“未定义”