【问题标题】:Reading current Qt Creator theme from a plugin从插件中读取当前的 Qt Creator 主题
【发布时间】:2021-03-22 23:13:09
【问题描述】:

有一个用于 Qt Creator 的插件,其 UI 只是一个 ActiveX。

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

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

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

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

【问题讨论】:

  • 我不确定 Qt creator 的主题颜色是否是使用应用程序调色板系统设置的,但请尝试获取 QApplication::instance()->palette() 并在那里列出颜色,看看它们是否有意义。否则,您不妨研究一下QStyle 机制,看看Qt Creator 是否使用自己的风格。

标签: qt qt-creator qtplugin


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多