如何将C ++类设置为qml中的Item?

问题描述 投票:-2回答:1

我有一个名为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”的对象,以便我可以将此对象上的所有数据都设置为所有信号?

c++ qt qml
1个回答
2
投票

首先class2objundefined意味着它不是可以从QML访问的属性接口。

其次,您不能将qml对象分配给另一个qml对象。这取决于你想做什么。

如果要分配标识,则必须将其放入目标引用中,并将其实现为属性:

property Class2 cl2: null
...
cl2=ObjectAccessor.class2obj

如果要分配值,例如将一个对象的属性值设置为另一个,则必须按成员分配该成员。

如果你只需要连接一个信号,那么你需要的只是一个连接元素,只要ObjectAccessor.class2obj实际工作:

Connections {
  target: ObjectAccessor.class2obj
  onMessageChanged: doStuff()
}

要获得更完整的答案,您必须发布与Class2ObjectAccessor相关的代码。并澄清那一点:

所以我可以在这个对象上的所有数据都是一个信号

© www.soinside.com 2019 - 2024. All rights reserved.