QDBusPendingCallWatcher Class

QDBusPendingCallWatcherクラスは、非同期応答を待つ便利な方法を提供します。詳細...

Header: #include <QDBusPendingCallWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
Inherits: QObject and QDBusPendingCall

パブリック関数

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

シグナル

void finished(QDBusPendingCallWatcher *self = nullptr)

詳細説明

QDBusPendingCallWatcherは、リプライが到着したときに発せられるfinished ()シグナルを提供します。

通常、次の例のように使用されます:

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

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

QDBusPendingCallWatcher もこのクラスを継承しているため、元のQDBusPendingCall オブジェクトを保持しておく必要はないことに注意してください。

上記のコードで接続されるスロットは、以下のようなものになります:

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

リプライの引数のタイプを検証するためにQDBusPendingReply 。リプライに正確に2つの引数(1つの文字列と1つのQByteArray )が含まれていない場合、QDBusPendingReply::isError() はtrueを返します。

QDBusPendingReplyも参照してください

メンバ関数 ドキュメント

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

非同期ペンディング・コールcall の応答を監視する QDBusPendingCallWatcher オブジェクトを作成し、このオブジェクトの親をparent に設定します。

[virtual noexcept] QDBusPendingCallWatcher::~QDBusPendingCallWatcher()

このオブジェクトを破棄します。このQDBusPendingCallWatcher オブジェクトが未完了のペンディング・コールへの最後の参照であった場合、コールはキャンセルされる。

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

このシグナルは、保留中の呼が終了し、その応答が利用可能になると発せられる。self パラメータはオブジェクト自身へのポインタで、スロットがプロパティにアクセスし、リプライの内容を判断できるように便宜上渡される。

bool QDBusPendingCallWatcher::isFinished() const

保留中の呼び出しの処理が終了し、応答を受信した場合、true を返す。

この関数は、waitForFinished() を呼び出した場合、または外部 D-Bus イベントが発生した場合にのみ状態が変化することに注意してください。

QDBusPendingReply::isFinished()も参照

void QDBusPendingCallWatcher::waitForFinished()

応答を受信して処理するまで、呼び出し元のスレッドの実行を一時停止する。この関数が戻った後、isFinished() は真を返すはずである。これは、リプライの内容を処理する準備ができたことを示す。

QDBusPendingReply::waitForFinished()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。