不允许单例中的嵌套只读属性?
Nested Readonly Properties in Singleton Not Allowed?
我有一个 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
}
}
它们确实可以编译,但是,example1
在 Qt Creator
中有部分以红色突出显示(请参见下面的屏幕截图),这似乎表明存在错误。
这似乎是a variant of this bug, only with readonly
recursively applied. The above bug was fixed in Qt 5.4。总的来说,虽然我的代码看起来有点迟钝并且偶尔会崩溃,所以我想知道使用 QtObject
的方法是否会产生一些实际问题(我的实际代码非常大,所以我不确定这个是罪魁祸首,还是旁观者)。
我意识到 example4
是最佳实践,因为我正在声明一系列 readonly property
通用原始类型的值。
我的问题是:
- 错误语法的突出显示是错误吗?
- 声明具有
readonly property
值的 QtObject
是否存在任何基本问题?
- 任何潜在问题是否也适用于
example1
和 example2
,即使 Qt Creator
认为它们在语法上是正确的?
我正在使用 Qt 5.7
和 Qt Creator 4.0.2
。
当您 运行 您的示例是否正常工作?如果是,则可能是 Qt Creator 错误。最重要的是,当您 运行 它时,您的程序可以正常工作,而不是 Qt Creator 可以正确显示内容。所以测试它并 f**k Qt Creator 如果它指示错误的事情是正确的。
否则我个人会到处使用 JSON 对象,就像你的 example4
属性.
我有一个 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
}
}
它们确实可以编译,但是,example1
在 Qt Creator
中有部分以红色突出显示(请参见下面的屏幕截图),这似乎表明存在错误。
这似乎是a variant of this bug, only with readonly
recursively applied. The above bug was fixed in Qt 5.4。总的来说,虽然我的代码看起来有点迟钝并且偶尔会崩溃,所以我想知道使用 QtObject
的方法是否会产生一些实际问题(我的实际代码非常大,所以我不确定这个是罪魁祸首,还是旁观者)。
我意识到 example4
是最佳实践,因为我正在声明一系列 readonly property
通用原始类型的值。
我的问题是:
- 错误语法的突出显示是错误吗?
- 声明具有
readonly property
值的QtObject
是否存在任何基本问题? - 任何潜在问题是否也适用于
example1
和example2
,即使Qt Creator
认为它们在语法上是正确的?
我正在使用 Qt 5.7
和 Qt Creator 4.0.2
。
当您 运行 您的示例是否正常工作?如果是,则可能是 Qt Creator 错误。最重要的是,当您 运行 它时,您的程序可以正常工作,而不是 Qt Creator 可以正确显示内容。所以测试它并 f**k Qt Creator 如果它指示错误的事情是正确的。
否则我个人会到处使用 JSON 对象,就像你的 example4
属性.