Qt 已完成订单上的QML对象和嵌套对象

Qt 已完成订单上的QML对象和嵌套对象,qt,qml,Qt,Qml,我有一个包含项的QML文件,该项包含一个对象: QtObject { id: something Component.onCompleted: { console.log("A"); } } 在文件项中,我还有: Component.onCompleted: { console.log("B"); } 我在应用程序输出中看到的是 B A 我想要的是首先处理一个,是否有必要这样做,或者我必须更改子对象中的函数,并从父对象的onComplete

我有一个包含项的QML文件,该项包含一个对象:

QtObject {
    id: something

    Component.onCompleted: {
        console.log("A");
    }
}
在文件项中,我还有:

Component.onCompleted: {
    console.log("B");
}
我在应用程序输出中看到的是

B
A

我想要的是首先处理一个,是否有必要这样做,或者我必须更改子对象中的函数,并从父对象的onCompleted调用它?

好吧,恐怕你不能更改“completed”顺序。但是您可以控制QtObject加载的时间。例如:

Item {
  property QtObject something: null 
  property Component objectComponent: QtObject {
    objectName: "something"
    Component.onCompleted: console.log("A");
  }

  Component.onCompleted: {
    something = objectComponent.createObject(this);
    console.log("B", something);
  }
}
还有一种类型,它基本上为您执行
createObject()
,不过它更多的是用于按需加载可视组件

当然,“something”
QtObject
也可以在外部文件中


补充:显然,这也可以按照所需的顺序工作和加载,尽管我不确定自己是否更喜欢它(但我认为它更具“声明性”)


嗯,好吧,你不能更改“已完成”的订单。但是您可以控制QtObject加载的时间。例如:

Item {
  property QtObject something: null 
  property Component objectComponent: QtObject {
    objectName: "something"
    Component.onCompleted: console.log("A");
  }

  Component.onCompleted: {
    something = objectComponent.createObject(this);
    console.log("B", something);
  }
}
还有一种类型,它基本上为您执行
createObject()
,不过它更多的是用于按需加载可视组件

当然,“something”
QtObject
也可以在外部文件中


补充:显然,这也可以按照所需的顺序工作和加载,尽管我不确定自己是否更喜欢它(但我认为它更具“声明性”)


正如您从官方文档()中所读到的,“未定义运行未完成处理程序的顺序”。因此,您不能信任您的控制台输出,因为您知道对象的创建顺序


如果希望按特定顺序加载组件,可以使用该项。

正如您可以从官方文档()中阅读的那样,“未定义运行未完成处理程序的顺序”。因此,您不能信任您的控制台输出,因为您知道对象的创建顺序


如果您想按特定顺序加载组件,可以使用该项。

@splaten,我添加了另一个替代项。。。只是少一点啰嗦。干杯@斯帕滕,我加了另一个选择。。。只是少一点啰嗦。干杯我使用QML越多,我就越想让它像C++一样工作,我越是了解QML,我就越想知道它的位置在哪里?我是。它更像是Web编程而不是C++或“甚至”Python等等。尽可能多地在C++中做,尽可能把前端保留为“哑巴”。您可能会问,为什么不直接使用HTML/CSS/JS进行演示?的确,我也因为同样的原因感到沮丧。我放弃了,现在我正在发展,正如“MaxPixNoO”所建议的。我越用QML,我越努力使它像C++一样工作,我越是了解QML,我就越想知道它的位置在哪里?我是。它更像是Web编程而不是C++或“甚至”Python等等。尽可能多地在C++中做,尽可能把前端保留为“哑巴”。您可能会问,为什么不直接使用HTML/CSS/JS进行演示?的确,我也因为同样的原因感到沮丧。我放弃了,现在我正在按照@MaximPaperno的建议发展。
Item {
  property QtObject something: objectComponent.createObject(this); 
  property Component objectComponent: QtObject {
    objectName: "something"
    Component.onCompleted: console.log("A");
  }

  Component.onCompleted: console.log("B", something);
}