Qt Quick Abonnement
Verwenden Sie „ Qt Quick Controls “, um eine Anwendung zu erstellen, die MQTT-Themen abonnieren kann.

Qt Quick Das Beispiel „Subscription“ zeigt, wie man „ QMqttClient “ als QML-Typ registriert und in einer „ Qt Quick “-Anwendung verwendet.
Qt MQTT bietet in der aktuellen Version keine QML-API. Sie können jedoch die C++-Klassen des Moduls für QML verfügbar machen.
Erstellen eines Clients
Stellen Sie eine Verbindung zu „ QMqttSubscription::messageReceived “ ( ) her, um alle an den Broker gesendeten Nachrichten zu empfangen:
QmlMqttSubscription::QmlMqttSubscription(QMqttSubscription *s, QmlMqttClient *c)
: sub(s)
, client(c)
{
connect(sub, &QMqttSubscription::messageReceived, this, &QmlMqttSubscription::handleMessage);
}Erstellen Sie eine ` QmlMqttClient `-Klasse mit der ` QMqttClient `-Klasse als Basisklasse:
QmlMqttClient::QmlMqttClient(QObject *parent)
: QObject(parent)
{
connect(&m_client, &QMqttClient::hostnameChanged, this, &QmlMqttClient::hostnameChanged);
connect(&m_client, &QMqttClient::portChanged, this, &QmlMqttClient::portChanged);
connect(&m_client, &QMqttClient::stateChanged, this, &QmlMqttClient::stateChanged);
}Verwenden Sie die Funktion ` subscribe() `, um ein Abonnementobjekt zu erstellen:
QmlMqttSubscription* QmlMqttClient::subscribe(const QString &topic)
{
auto sub = m_client.subscribe(topic, 0);
auto result = new QmlMqttSubscription(sub, this);
return result;
}Verwenden Sie ein ` QMqttMessage `-Objekt, um die Nutzdaten einer empfangenen Nachricht zu speichern:
void QmlMqttSubscription::handleMessage(const QMqttMessage &qmsg)
{
emit messageReceived(qmsg.payload());
}Registrieren von Klassen in QML
Laden Sie in der Datei „ main.cpp “ den QML-Typ „Main“ aus dem Modul „subscription“:
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreationFailed, &app,
[]() { QCoreApplication::exit(EXIT_FAILURE); }, Qt::QueuedConnection);
engine.loadFromModule(u"subscription"_s, u"Main"_s);Verwenden Sie nun den Typ „MqttClient“ in der Datei „ Main.qml “, um einen MQTT-Client zu erstellen:
MqttClient {
id: client
hostname: hostnameField.text
port: portField.text
}Dateien:
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.