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

时间:2016-09-06 21:25:26

标签: qt singleton qml qt-creator readonly

我在Singleton代码中定义了QML

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中的部分以红色突出显示(见下面的屏幕截图),似乎表示错误。

enter image description here

这似乎是a variant of this bug,只有递归应用了readonly。上述错误已在Qt 5.4中修复。总的来说,尽管我的代码看起来有点迟缓并且偶尔会崩溃,所以我想知道使用QtObject的方法是否会产生一些实际问题(我的实际代码非常大,所以我'我不确定这是罪魁祸首,还是仅仅是一个旁观者。)

我意识到example4是最佳做法,因为我宣布了一系列普通原始类型的readonly property值。

我的问题是:

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

1 个答案:

答案 0 :(得分:1)

运行它时,您的示例是否正常工作?如果是,那很可能是Qt Creator的错误。最重要的是你的程序在运行时正常工作,而不是Qt Creator正确显示。所以测试它和f ** k Qt Creator,如果它表明错误的东西是正确的。

否则我个人会在所有地方使用JSON对象,就像你的example4属性一样。