2013-09-22 30 views
4

在此:何时调用Q_Property通知信号?

Q_PROPERTY(QString datastring READ showdata() NOTIFY datastringChanged)

是用于发射信号的目的,datastringChanged信号时,QML侧分配新的东西datastring属性,或者是它用于发射时的C++侧需要通知QML那边showdata()应该再次检查,因为它有更新的信息?

回答

4

后者。请注意,QML无法设置该属性(即仅以QML读取),因为它缺少方法WRITE

(而且,鸡蛋里挑骨头,只是READ showdata,没有()。)

+0

,如果我没有使其可写,应该QML元素仍然识别'onDatastringChanged'信号,如果属性被分配在QML侧的东西吗?或者这会是一个不同于我用NOTIFY指定的信号? – johnbakers

+1

是的,他们会的。你只需要记住在你的'WRITE'方法中发出这个信号。然后f.i.所有绑定将在数值改变时自动重新评估;如果你创建的是某种可在QML中创建的对象,那么你可以在QML中使用一个简单的'onDatastringChanged'处理程序;如果你只是将一个普通的QObject子类暴露给QML,那么你可以使用''Connections''元素,再次使用'onDatastringChanged'处理程序。 – peppe

+0

如果您在QML方面定义了任何属性,它会自动附加一个与属性相同的名称,前置为“on”。但是如果你改为在C++端定义一个属性,那么没有自动信号附加任何命名约定,对吧?它只会跟随您在Q_PROPERTY宏中指定的信号名称,对吗? – johnbakers