使用信号或 Q_PROPERTY 来更新 QML 对象
Use signals or Q_PROPERTY to update QML objects
我经常从服务器接收数据。该数据主要由数字组成。它们每个都对应一个需要更新的 QML 对象。
为了更新 C++
文件中的 QML
对象,Q_PROPERTY
和 signals
之间的最佳行动方案是什么?
很好的方法是从 QML 使用绑定到 C++ 对象。
F.ex。您有数据 class 应该作为某个 qml 对象显示给用户。
您的 C++ class 具有数据和适当的属性:
class MyData
{
Q_OBJECT
Q_PROPERTY(qreal number READ number NOTIFY numberChanged)
....
//here you implement setter function that emits numberChanged() signal
};
您通过一些助手 classes 或直接将您的数据暴露给 qml:
view->rootContext()->setContextProperty("myData", myDataObject);
比起你在 qml 中使用对象绑定:
Text
{
text: myData.number
}
现在您可以更改 MyData 对象中的数据 class 并且您的 qml 会自动更新。
我经常从服务器接收数据。该数据主要由数字组成。它们每个都对应一个需要更新的 QML 对象。
为了更新 C++
文件中的 QML
对象,Q_PROPERTY
和 signals
之间的最佳行动方案是什么?
很好的方法是从 QML 使用绑定到 C++ 对象。
F.ex。您有数据 class 应该作为某个 qml 对象显示给用户。
您的 C++ class 具有数据和适当的属性:
class MyData
{
Q_OBJECT
Q_PROPERTY(qreal number READ number NOTIFY numberChanged)
....
//here you implement setter function that emits numberChanged() signal
};
您通过一些助手 classes 或直接将您的数据暴露给 qml:
view->rootContext()->setContextProperty("myData", myDataObject);
比起你在 qml 中使用对象绑定:
Text
{
text: myData.number
}
现在您可以更改 MyData 对象中的数据 class 并且您的 qml 会自动更新。