Schauen Sie sich die QdbuspendingCallwatcher-Dokumentation.:
Der mit dem oben genannten Code angeschlossene Steckplatz könnte dem folgenden ähnlich sein:
void MyClass::callFinishedSlot(QDBusPendingCallWatcher *call)
{
QDBusPendingReply<QString, QByteArray> reply = *call;
if (reply.isError()) {
showError();
} else {
QString text = reply.argumentAt<0>();
QByteArray data = reply.argumentAt<1>();
showReply(text, data);
}
call->deleteLater();
}
Der ruf von Qobject :: deletelater. ist der Schlüssel: Dies bedeutet, dass QT das Objekt löscht, sobald die Ausführung in die Ereignisschleife zurückkehrt.
Solange Sie anrufen deleteLater
Innerhalb Client::handler(...)
, Sie müssen nicht - genauer Ihnen nicht mehr anrufen delete watcher;
irgendwo. Das einzige, was Sie sicherstellen müssen, ist, dass niemand das Objekt hinter sich verwendet call
Nach dem Renditen des Schlitzes.