Qml 在设置中保存JS对象(变量或变量)

Qml 在设置中保存JS对象(变量或变量),qml,Qml,当我写这篇文章时: property bool token: false Settings { property alias token: root.token } property var token: null Settings { property alias token: root.token } 然后将应用程序中的某个地方的token更改为true,下次运行应用程序时token为true 但当我写这篇文章时: property bool token: false

当我写这篇文章时:

property bool token: false

Settings {
    property alias token: root.token
}
property var token: null

Settings {
    property alias token: root.token
}
然后将应用程序中的某个地方的
token
更改为
true
,下次运行应用程序时
token
true

但当我写这篇文章时:

property bool token: false

Settings {
    property alias token: root.token
}
property var token: null

Settings {
    property alias token: root.token
}
并将token更改为
{'a':'b'}
例如,下次运行应用程序时,token是
null
like
Settings
不会保存JS对象。知道这里怎么了吗

更新: 似乎问题不在于保存js对象
{'a':'b'}
,QML成功地保存了它,问题在于
null
如果我将其更改为
false
一切正常。我想这与这个问题有关,但我不明白为什么
null
会被后处理,尽管使用
false
而不是
null
作为这个属性的默认值解决了这个问题,我不喜欢它,因为我不想要
false
这里,这在道德上是不合适的,我想要
null

更新2: 我找到了我的解决方案,没有为属性设置默认值(不是
false
也不是
null
)似乎可以解决这个问题,从道德上来说,这样做似乎是合适的:

property var token

Settings {
    property alias token: root.token
}
property var token

Settings {
    property alias token: root.token
}

我不明白为什么
null
还不起作用。欢迎任何解释。

设置属性的默认值(不是
false
也不是
null
)似乎可以解决问题: