从插件中读取当前的 Qt Creator 主题

Reading current Qt Creator theme from a plugin

Qt Creator 有一个插件 UI 只是一个 ActiveX。

问题是如果用户更改了 Qt Creator 主题,ActiveX 不会反映出来。

这就是为什么我需要将有关颜色的信息传递给 ActiveX 的原因,但为此,插件必须读取主题颜色信息。另外,当当前主题刚刚改变时需要通知插件。

我绝对是Qt的新手。突然没找到API读主题色

有没有办法从 Qt Creator 插件中获取当前的主题颜色,以及如何捕捉主题刚刚更改的时间?

src/libs/utils/theme/theme.h,其中包含 Utils::Theme class 和函数 Utils::Theme *Utils::creatorTheme()

让插件依赖于 Utils 库(使用 qmake 添加 QTC_LIB_DEPENDS += utils,使用 CMake 添加 UtilsDEPENDS)并在源代码中包含 #include <utils/theme/theme.h>你想访问主题。

通过 Utils::creatorTheme() 获取主题。请注意,这是在核心插件的 initialize 方法中设置的,因此它在您的插件的构造函数中不可用,但仅在 initialize 及更高版本中可用(参见 Plugin Life Cycle)。

然后您可以在 Theme 中查询 Theme::palette() 和其他各种特定于任务的颜色。

主题在运行时无法更改,因此您只需在启动期间(或稍后需要进行设置的时候)查询即可。