How to display data from MQTT server in real-time?
-
That looks like a job for a
Q_PROPERTY
and not for a signal.Store the message payload in a member variable of your class, let's say
QString m_message
.In your header you'd use a
Q_PROPERTY(QString message READ message NOTIFY messageChanged)
Implementation of the getter:
QString message() { return m_message; }
Add a signal
void messageChanged();
in your header.
And modify your exisitingonMQTT_Received
to be :void MyDataClass::onMQTT_Received(const QMQTT::Message &message) { m_message = message.payload(); emit messageChanged(); }
Then in your QML you can just do:
Label { text: myobj.message }
Nice and clean declarative code, no need to deal with
Connections
and signals in QML. -
That looks like a job for a
Q_PROPERTY
and not for a signal.Store the message payload in a member variable of your class, let's say
QString m_message
.In your header you'd use a
Q_PROPERTY(QString message READ message NOTIFY messageChanged)
Implementation of the getter:
QString message() { return m_message; }
Add a signal
void messageChanged();
in your header.
And modify your exisitingonMQTT_Received
to be :void MyDataClass::onMQTT_Received(const QMQTT::Message &message) { m_message = message.payload(); emit messageChanged(); }
Then in your QML you can just do:
Label { text: myobj.message }
Nice and clean declarative code, no need to deal with
Connections
and signals in QML.wrote on 29 Oct 2017, 18:06 last edited byAwesome @GrecKo!
Thank you so much. It worked for me.This was indeed easier. I tried it earlier but couldn't succeed, but the way explained was very explanatory.
So now I understood two exposing data to QML.Thank you everyone!
-
On a side note, the getter should be const, it doesn't modify anything in the class instance.
21/23