ich bin zwar nicht neu in Sachen c/c++, aber relativ neu in Sachen QT. Und ich habe ein Problem mit Connect, Signals und Slots.
Ich nutze das MQTT-Modul, um mich mit einem Broker zu verbinden und Messages zu bestimmten Topics zu empfangen.
Die mitgelieferten Beispiel funktionieren auch so weit, also arbeitet das Modul korrekt.
Nun muss ich ja reagieren wenn ich eine Nachricht empfange. Und dazu muss ein entsprechender Funktionshandler mit dem zugehörigen Signal verknüpft werden.
Dazu habe ich in der MainWindow-Klasse folgenden Slot und folgende Variablen deklariert
Code: Alles auswählen
private slots:
void updateMessage(const QMqttMessage &mqttMsg);
private:
Ui::MainWindow *ui;
QMqttClient *m_client;
QMqttSubscription *sub;
Code: Alles auswählen
// Subscripe Button wurde gedrueckt
void MainWindow::on_pushButton_3_clicked()
{
QMqttTopicFilter f;
f.setFilter("HF02//#");
sub = m_client->subscribe(f);
if (!sub)
{
QMessageBox::critical(this, "Error","Could not subscribe. Is there a valid connection?");
return;
} else {
connect (sub, &QMqttSubscription::messageReceived, this, &MainWindow::updateMessage);
QMessageBox::information(this,"Message","Subscription successfull");
}
}
Code: Alles auswählen
void MainWindow::updateMessage(const QMqttMessage &mqttMsg)
{
ui->listWidget->addItem (mqttMsg.payload());
}
Da ich mit den gleichen Angaben bei den Beispielen Erfolg habe, kann es auch nicht am Topic liegen, es muss also irgendwie am connect liegen.
Wie krieg ich hier die Kuh vom Eis ?
Greets
Grieko