不允许单例中的嵌套只读属性?

Nested Readonly Properties in Singleton Not Allowed?

我有一个 SingletonQML 代码中定义为:

pragma Singleton

import QtQuick 2.0

QtObject {
    /*
    readonly property QtObject example1: QtObject {
        readonly property int example1_1: 10
        readonly property int example1_2: 105
        readonly property int example1_3: 23
        readonly property int example1_4: 105
        readonly property int example1_5: 23
    }
    readonly property QtObject example2: QtObject {
        property int example2_1: 10
        property int example2_2: 105
        property int example2_3: 23
        property int example2_4: 105
        property int example2_5: 23
    }
    property QtObject example3: QtObject {
        readonly property int example3_1: 10
        readonly property int example3_2: 105
        readonly property int example3_3: 23
        readonly property int example3_4: 105
        readonly property int example3_5: 23
    }*/
    readonly property variant example4: {
        "example4_1": 10,
        "example4_2": 105,
        "example4_3": 23,
        "example4_4": 105,
        "example4_5": 23
    }
}

它们确实可以编译,但是,example1Qt Creator 中有部分以红色突出显示(请参见下面的屏幕截图),这似乎表明存在错误。

这似乎是a variant of this bug, only with readonly recursively applied. The above bug was fixed in Qt 5.4。总的来说,虽然我的代码看起来有点迟钝并且偶尔会崩溃,所以我想知道使用 QtObject 的方法是否会产生一些实际问题(我的实际代码非常大,所以我不确定这个是罪魁祸首,还是旁观者)。

我意识到 example4 是最佳实践,因为我正在声明一系列 readonly property 通用原始类型的值。

我的问题是:

  1. 错误语法的突出显示是错误吗?
  2. 声明具有 readonly property 值的 QtObject 是否存在任何基本问题?
  3. 任何潜在问题是否也适用于 example1example2,即使 Qt Creator 认为它们在语法上是正确的?

我正在使用 Qt 5.7Qt Creator 4.0.2

当您 运行 您的示例是否正常工作?如果是,则可能是 Qt Creator 错误。最重要的是,当您 运行 它时,您的程序可以正常工作,而不是 Qt Creator 可以正确显示内容。所以测试它并 f**k Qt Creator 如果它指示错误的事情是正确的。

否则我个人会到处使用 JSON 对象,就像你的 example4 属性.