-
信号和槽的映射
在C++类中定义的信号和槽可以在QML中连接,以实现事件驱动的编程。在上面给出的Person类的例子中,我们定义了一个nameChanged信号。在QML中,可以这样连接,
qml
Button {
text: 改变名字并通知
onClicked: {
person.nameChanged.connect(function(newName) {
Text {
text: newName
}
});
person.setName(王五);
}
} -
属性映射
C++类中定义的属性可以通过QML中的属性绑定来使用。如,
qmlText {
text: person.name __ 绑定C++类的name属性
} -
访问QML类型
同样,QML类型也可以通过C++代码来访问和操作。这需要使用QQmlEngine和QObject的相关方法。例如,
cpp
www.laipuhuo.com/015BF064385… www.laipuhuo.com/015BC1C6249… www.laipuhuo.com/01553225869… www.laipuhuo.com/0153c83fe75… www.laipuhuo.com/014fbeb6426… www.laipuhuo.com/014E3D5E86A… QQmlEngine *engine = QQmlEngine::contextForObject(this);
QObject personObject = engine->rootContext()->findChild<QObject>(person);
if (personObject) {
QString newName = personObject->property(name).toString();
__ 这里可以对新名字进行处理