【发布时间】:2016-02-26 11:23:36
【问题描述】:
假设我有一个 main.qml 文件:
import CustomWidgets 1.0
Item
{
id: itemId
anchors.fill: parent
CustomWidget {}
Component.onCompleted: // c++ function call
}
包括来自另一个名为 CustomWidget.qml 的文件的 CustomWidget:
Item
{
id: customWidgetId
anchors.fill: parent
// attributes
Component.onCompleted: // c++ function call
}
从逻辑上讲,CustomWidget onCompleted 的信号在主信号之前被调用。但据我所见,它没有阻塞,这意味着 QML 对象的实例化仍在继续。
有没有办法防止这种情况或其他方式?我的第一个 onCompleted 信号初始化了一些数据,然后在第二个信号中访问这些数据。
由于当前处理信号的方式,我的应用程序在尝试访问不存在的数据(尚未初始化)时崩溃。
编辑:我在想我可以添加一个简单的bool 变量,当CustomWidget onCompleted 的信号结束时将其设置为true。另一个信号会循环等待。
【问题讨论】:
-
onCompleted处理程序的执行顺序未按设计定义。我认为你可以更好地重新思考你的方法。