我有一个名为Class2
的c ++类,我使用qmlRegisterType
方法注册它,并将其用作我应用程序中qml页面的代码。
我有qml文件,在onCompleted
我希望获得Class2
的对象并在qml文件中将其设置为cl2
。但是我收到错误
赋值运算符的左侧不是左值
Rectangle{
Component.onCompleted: {
cl2=ObjectAccessor.class2obj;//error is here
}
Class2 {
id: cl2
onMessageChanged: { }
}
}
在qml文件中,我更改了Class2
property Class2 cl2: Class2 {}
但现在又出现了另一个错误
无法将[undefined]指定给Class2 *
我如何设置'Class2'的对象?所以我可以在这个对象上的所有数据都是一个信号吗?
答案 0 :(得分:2)
首先class2obj
为undefined
意味着它不是可以从QML访问的属性接口。
其次,您不能将qml对象分配给另一个qml对象。这取决于你想做什么。
如果要分配标识,则必须将其放入目标引用中,并将其作为属性实现:
property Class2 cl2: null
...
cl2=ObjectAccessor.class2obj
如果要分配值,例如将一个对象的属性值设置为另一个,则必须按成员分配该成员。
如果您只需要连接信号,那么您需要的只是一个连接元素,前提是ObjectAccessor.class2obj
实际上有效:
Connections {
target: ObjectAccessor.class2obj
onMessageChanged: doStuff()
}
要获得更完整的答案,您必须发布与Class2
和ObjectAccessor
相关的代码。并澄清那一点:
所以我可以在这个对象上的所有数据都是一个信号