Jump to content

Qt for HarmonyOS/user development guide/qt for harmonyos color theme zh

From Qt Wiki

中文 English

Qt for HarmonyOS 主题设置接口说明

Qt 在 HarmonyOS(OHOS)平台上提供了一组接口,用于控制和感知应用的主题模式(浅色 / 深色 / 跟随系统)。


1. 接口说明

1.1 查询当前主题状态

bool QOhosAppContext::darkThemeActive() const

用于判断 Qt 程序当前是否处于深色主题状态。

返回值 说明
true 当前使用深色主题
false 当前使用浅色主题

1.2 主题切换通知

void QOhosAppContext::darkThemeActiveChanged(bool darkThemeActive)

当 Qt 程序的主题发生切换时触发的信号。

参数 说明
darkThemeActive true 表示切换为深色主题,false 表示切换为浅色主题

应用可通过连接该信号,在主题切换时更新界面样式。


1.3 设置应用主题模式

void QOhosAppContext::setColorThemeMode(ColorThemeMode mode)

用于设置 Qt 程序的主题模式。

ColorThemeMode 枚举值

枚举值 说明
LightTheme 浅色主题(Qt 程序的默认主题)
DarkTheme 深色主题
FollowSystemSetting 跟随系统主题设置,当系统主题切换时,Qt 程序同步切换

2. 使用示例

以下示例展示了如何在 Qt 应用中设置主题模式为“跟随系统”,并在主题变化时接收通知:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget window;

    auto *appContext = QtOhosExtras::QOhosAppContext::instance();
    appContext->setColorThemeMode(
        QtOhosExtras::QOhosAppContext::ColorThemeMode::FollowSystemSetting);

    QLabel *label = new QLabel(&window);

    QObject::connect(
        appContext,
        &QtOhosExtras::QOhosAppContext::darkThemeActiveChanged,
        label,
        [label](bool darkThemeActive) {
            // Theme change callback
            // Update UI according to darkThemeActive
        }
    );

    window.show();
    return app.exec();
}

3. 注意事项

  • 若设置为
    FollowSystemSetting
    ,应用主题将自动与系统主题保持一致。
  • 可通过
    darkThemeActive()
    在任意时刻查询当前主题状态。
  • 建议在主题切换回调中统一更新调色板、样式表或自绘控件的颜色配置。