Sur cette page

QDBusPendingCallWatcher Class

La classe `QDBusPendingCallWatcher` offre un moyen pratique d'attendre des réponses asynchrones. En savoir plus...

En-tête : #include <QDBusPendingCallWatcher>
CMake : find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake : QT += dbus
Hérite de :QObject et QDBusPendingCall

Fonctions publiques

QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent = nullptr)
virtual ~QDBusPendingCallWatcher()
bool isFinished() const
void waitForFinished()

Signaux

void finished(QDBusPendingCallWatcher *self = nullptr)

Description détaillée

Le QDBusPendingCallWatcher fournit le signal finished() qui sera émis lorsqu’une réponse arrive.

Il est généralement utilisé comme dans l'exemple suivant :

    QDBusPendingCall async = iface->asyncCall("RemoteMethod", value1, value2);
    QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);

    QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this,
                     &DBus_PendingCall_Interface::callFinishedSlot);

Notez qu’il n’est pas nécessaire de conserver l’objet QDBusPendingCall d’origine, car QDBusPendingCallWatcher hérite également de cette classe.

Le slot auquel se connecte le code ci-dessus pourrait ressembler à ce qui suit :

void DBus_PendingCall_Interface::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();
}

Notez l’utilisation de ` QDBusPendingReply ` pour valider les types d’arguments dans la réponse. Si la réponse ne contient pas exactement deux arguments (une chaîne de caractères et un ` QByteArray`), la fonction ` QDBusPendingReply::isError()` renverra `true`.

Voir également QDBusPendingReply.

Documentation des fonctions membres

[explicit] QDBusPendingCallWatcher::QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent = nullptr)

Crée un objet `QDBusPendingCallWatcher` pour surveiller les réponses relatives à l'call d'appel asynchrone en attente et définit le parent de cet objet sur ` parent`.

[virtual noexcept] QDBusPendingCallWatcher::~QDBusPendingCallWatcher()

Détruit cet objet. Si cet objet ` QDBusPendingCallWatcher ` était la dernière référence à l'appel en attente non terminé, celui-ci sera annulé.

[signal] void QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher *self = nullptr)

Ce signal est émis lorsque l'appel en attente est terminé et que sa réponse est disponible. Le paramètre ` self ` est un pointeur vers l'objet lui-même, transmis pour des raisons pratiques afin que le slot puisse accéder aux propriétés et déterminer le contenu de la réponse.

bool QDBusPendingCallWatcher::isFinished() const

Renvoie ` true ` si le traitement de l'appel en attente est terminé et que la réponse a été reçue.

Notez que cette fonction ne change d’état que si vous appelez waitForFinished() ou si un événement D-Bus externe se produit, ce qui n’arrive généralement que si vous revenez à l’exécution de la boucle d’événements.

Voir également QDBusPendingReply::isFinished().

void QDBusPendingCallWatcher::waitForFinished()

Suspend l'exécution du thread appelant jusqu'à ce que la réponse soit reçue et traitée. Une fois que cette fonction a renvoyé une valeur, la fonction isFinished() doit renvoyer « true », indiquant que le contenu de la réponse est prêt à être traité.

Voir également QDBusPendingReply::waitForFinished().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.