【发布时间】:2020-10-16 12:28:53
【问题描述】:
在 QML 中取以下代码:
import QtQuick 2.14
import QtQuick.Controls 1.4
TabView {
Tab {
id: firstTab
Component.onCompleted: {
console.log("1")
}
Rectangle {
id: firstTabRectangle
Component.onCompleted: {
console.log("2")
}
}
}
Tab {
id: secondTab
Component.onCompleted: {
console.log("3")
}
Rectangle {
id: secondTabRectangle
Component.onCompleted: {
console.log("4")
}
}
}
}
现在的问题是:
代码执行时控制台打印什么?
我猜到了
1 (firstTab)
2 (firstTabRectangle)
3 (secondTab)
但结果是:
3 (secondTab)
1 (firstTab)
2 (firstTabRectangle)
我知道“4”没有被创建,因为我们看到firstTab“1”和firstTabRectangle“2”。所以secondTabRectangle "2" 在我们想要切换到选项卡之前永远不会创建。
【问题讨论】:
-
我认为声明性代码的顺序永远无法保证。
-
我认为是。运行此命令时,任何人都可以得到除 3 1 2 之外的另一个订单吗?
-
为什么顺序对您的应用程序很重要?
-
订单对我来说并不重要。但这是我被问到的一个问题。