1

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

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

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

我绝对是 Qt 的新手。突然,我还没有找到读取主题颜色的 API。

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

4

1 回答 1

1

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

让插件依赖于 Utils 库(使用 qmake add QTC_LIB_DEPENDS += utils,使用 CMake add Utilsto DEPENDS)并将 with 包含#include <utils/theme/theme.h>在要访问主题的源代码中。

获取主题Utils::creatorTheme()。请注意,这是在核心插件的initialize方法中设置的,因此它在插件的构造函数中不可用,而仅在initialize及以后的版本中可用(请参阅插件生命周期)。

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

主题在运行时无法更改,因此您只需在启动期间(或稍后您需要设置您的东西)查询此主题是安全的。

于 2020-12-11T20:14:33.463 回答