设置应用程序以记住主题:黑暗与光明

时间:2020-10-14 11:11:37

标签: qt qml

有一个用于记住应用程序主题的QML设置:

import QtQuick.Controls 2.0 as QQC2

QQC2.ApplicationWindow {

    id: standaloneWindow // ID is required to be able to get properties
    
    Material.theme: Material.Dark // Can be either Dark or Light

    Component.onCompleted: {
        // On launch, read theme from settings file
        standaloneWindow.Material.theme = appSettings.materialTheme
    }

    Component.onDestruction:{
        // On close, write theme to settings file
        appSettings.materialTheme = standaloneWindow.Material.theme
    }

    Settings {
        id: appSettings

        category: "Theme"
        property int materialTheme // Store theme as "int" type in settings file
    }

}

问题

在第一次启动时(例如,删除设置文件时),无法使用Dark启动主题。在首次启动时,无论什么情况,应用程序始终始终以Light为主题!

原因

没有设置文件时,appSettings.materialTheme变为0,这是int类型的默认设置。因此,0等效于Material.Dark枚举。这就是为什么在没有设置文件的情况下,应用程序总是在黑暗模式下启动的原因。

问题

即使没有设置文件,如何使应用程序以灯光模式启动?

到目前为止已尝试

我尝试使用alias而不是int,但是standaloneWindow没有绑定到Material.theme的属性:

    Settings {
        // ...
        property alias materialTheme: standaloneWindow.???
    }

Any suggestion?

1 个答案:

答案 0 :(得分:0)

如@Mitch所评论,问题已通过以下方式解决:

    Settings {

        id: appSettings

        category: "Theme"

        // Set dark theme to be default for the very first launch (when settings file is NOT available)
        property int materialTheme: Material.Dark
    }