Ist es sicher, Qt's Timer in seiner "Timeout" Signal/Slot Funktion zu stoppen? Ich kann anscheinend keine Informationen in der Qt-Dokumentation über die QTimer finden.Qt QTimer ist es sicher, es auf diese Weise zu stoppen?
Ich habe einen Timer erstellt, der regelmäßig eine "keep alive" -Nachricht an den Server sendet. Ich möchte, dass dieser Timer gestoppt wird, wenn beim Senden einer Nachricht ein Fehler auftritt.
private:
QTimer* mpKeepAliveTimer;
Timer wird wie folgt initialisiert:
mpKeepAliveTimer = new QTimer(/* this */);
QObject::connect(mpKeepAliveTimer, SIGNAL(timeout()), this, SLOT(OnKeepAlive()));
mpKeepAliveTimer->start(KEEP_ALIVE_PERIOD);
wie dies Gestoppt:
Dankvoid Classname::OnKeepAlive()
{
if (isErrorFound == true)
mpKeepAliveTimer->stop(); // <---- IS THIS SAFE?
}
:
if (mpKeepAliveTimer != NULL) // <-- Edited
{
if (mpKeepAliveTimer->isActive() == true)
mpKeepAliveTimer->stop();
delete mpKeepAliveTimer;
mpKeepAliveTimer = NULL;
}
Timeout-Funktion sieht wie folgt aus.
Dieser dritte Codeblock könnte verfeinern. Es besteht keine Notwendigkeit, den Timer zu stoppen, bevor er zerstört wird. Der gesamte Block kann reduziert werden, um mpKeepAliveTimer zu löschen; mpKeepAliveTimer = NULL; ' – cgmb