使用信号或Q_PROPERTY更新QML对象

时间:2016-02-04 14:55:49

标签: qt qml qt-signals qproperty

我经常从服务器接收数据。该数据主要由数字组成。它们中的每一个都对应于需要更新的QML对象。

Q_PROPERTYsignals之间为了更新QML文件中的C++个对象,最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

非常好的方法是使用从QML绑定到C ++对象。

F.ex。您有一些数据类应该作为某个qml对象显示给用户。

您拥有包含数据和适当属性的C ++类:

class MyData
{
    Q_OBJECT
    Q_PROPERTY(qreal number READ number NOTIFY numberChanged)
    ....
    //here you implement setter function that emits numberChanged() signal

};

您可以通过一些帮助程序类或直接将数据公开给qml:

view->rootContext()->setContextProperty("myData", myDataObject);

比你在qml中使用绑定到对象:

Text 
{
    text: myData.number 
}

现在您可以更改MyData类对象中的数据并自动更新qml。