person.nameChanged.www.laipuhuo.com connect(function(newName

65 阅读1分钟
  1. 信号和槽的映射
    在C++类中定义的信号和槽可以在QML中连接,以实现事件驱动的编程。在上面给出的Person类的例子中,我们定义了一个nameChanged信号。在QML中,可以这样连接,
    qml
    Button {
    text: 改变名字并通知
    onClicked: {
    person.nameChanged.connect(function(newName) {
    Text {
    text: newName
    }
    });
    person.setName(王五);
    }
    }

  2. 属性映射
    C++类中定义的属性可以通过QML中的属性绑定来使用。如,
    qml

    Text {
    text: person.name __ 绑定C++类的name属性
    }

  3. 访问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();
    __ 这里可以对新名字进行处理