Посмотрите на QdbuspendingCallwatcher Документация:
Слот, подключенный к вышеуказанному коду, может быть чем-то похожем на следующее:
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();
}
Зов Qobject :: Deletelater. Это ключ: это означает, что QT удалит объект, как только выполнение возвращается к контуру события.
До тех пор, пока вы звоните deleteLater
внутри Client::handler(...)
, Вам не нужно - точнее ты не муже нет - звоните delete watcher;
в любом месте. Единственное, что вы должны обеспечить, это то, что никто не использует объект позади call
После возвращения слота.