【问题标题】:QML TabView creation orderQML TabView 创建顺序
【发布时间】: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 之外的另一个订单吗?
  • 为什么顺序对您的应用程序很重要?
  • 订单对我来说并不重要。但这是我被问到的一个问题。

标签: qt qml


【解决方案1】:

根据completedsignal 上的文档,我有一个坏消息要告诉你,我的朋友:

处理程序的运行顺序未定义。

所以最好不要依赖它的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2020-07-25
    相关资源
    最近更新 更多