@Dean21 I just figured this out myself and am just posting in case someone else has the same issue.
My function where I want the timer now looks like shown below:
QObject::connect(&client, &QMMqttClient::onMessageReceived, [this](const QString &topic, const QByteArray &msg) {
ui->Alarm_Triggered_Label->setText("Temperature alarm of PSU triggered, HV output disabled for 5 minutes");
ui->HV_ON_OFF_Button->setEnabled(false);
// Use QMetaObject::invokeMethod to execute the code in the main GUI thread
QMetaObject::invokeMethod(this, "publishAfterDelay", Qt::QueuedConnection);
});
And the call to function publishAfterDelay() looks like shown below:
void Widget::publishAfterDelay()
{
QTimer::singleShot(3000, this, [this]() {
client.publishMesage("Alarm_5_min_cooldown_complete", "1");
qDebug() << "timer pinged";
});
}
Hope this helps anyone else.