2016-02-04 6 views
0

Я очень часто получаю данные с сервера. Эти данные в основном состоят из чисел. Каждый из них соответствует объекту QML, который необходимо обновить.Использовать сигналы или Q_PROPERTY для обновления объектов QML

Что бы лучший курс действий между Q_PROPERTY и signals для того, чтобы обновить QML объекты из C++ файлов?

+0

обновить объекты QML из файлов C++? – falkb

+0

Да. См. [Документация по привязке Qt] (http://doc.qt.io/qt-4.8/qtbinding.html) –

ответ

1

Весьма хороший способ - использовать привязку к объекту C++ из QML.

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 обновляется автоматически.