如何将C ++类设置为qml中的Item?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将C ++类设置为qml中的Item?相关的知识,希望对你有一定的参考价值。
我有一个名为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”的对象,以便我可以将此对象上的所有数据都设置为所有信号?
答案
首先class2obj
是undefined
意味着它不是可以从QML访问的属性接口。
其次,您不能将qml对象分配给另一个qml对象。这取决于你想做什么。
如果要分配标识,则必须将其放入目标引用中,并将其实现为属性:
property Class2 cl2: null
...
cl2=ObjectAccessor.class2obj
如果要分配值,例如将一个对象的属性值设置为另一个,则必须按成员分配该成员。
如果你只需要连接一个信号,那么你需要的只是一个连接元素,只要ObjectAccessor.class2obj
实际工作:
Connections {
target: ObjectAccessor.class2obj
onMessageChanged: doStuff()
}
要获得更完整的答案,您必须发布与Class2
和ObjectAccessor
相关的代码。并澄清那一点:
所以我可以在这个对象上的所有数据都是一个信号
以上是关于如何将C ++类设置为qml中的Item?的主要内容,如果未能解决你的问题,请参考以下文章