如何在QDeclarativeView上收到的QML对象上设置事件监听器?

时间:2012-05-03 09:24:46

标签: c++ qt qml

我们在主程序中安装了一个对象并将其传递给QML View。定义了Q_PROPERTY。我想知道如何将事件列表器设置为NOTIFY信号?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,this Qt DevNet forum post的设置与您的相似。只有在这种情况下,他们才会定义READ函数,而somethingHappened函数又会发出class SomeClass : public QObject { Q_OBJECT Q_PROPERTY(sometype someProperty READ getSomeProperty NOTIFY somePropertyChanged) signals: void somePropertyChanged(); }; QML_DECLARE_TYPE(SomeClass) 信号。请务必一直向下滚动到工作示例的最后一条注释。

总之,您在C ++头文件中定义了类似的内容:

qmlRegisterType<SomeClass>("SomeModule", 1, 0, "SomeClass");
SomeClass myObj;
QDeclarativeView view;
view.rootContext()->setContextProperty("rootItem", (SomeClass *)&myObj);

在C ++主方法中有类似的东西:

import SomeModule 1.0

SomeClass {
    onSomePropertyChanged: {
      // do stuff
    }
}

然后在QML方面你会像这样处理它:

{{1}}