Spec-Zone.ru › Qt 5.15

Класс QDBusPendingCallWatcher

Класс QDBusPendingCallWatcher предоставляет удобный способ ожидания асинхронных ответов. Подробнее...

Заголовок: #include <QDBusPendingCallWatcher>
qmake: QT += dbus
С версии: Qt 4.5
Наследует: QObject и QDBusPendingCall

Этот класс был введен в Qt 4.5.

  • Список всех членов, включая унаследованные члены

Открытые функции

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, SIGNAL(finished(QDBusPendingCallWatcher*)),
                     this, SLOT(callFinishedSlot(QDBusPendingCallWatcher*)));

Обратите внимание, что нет необходимости хранить исходный объект QDBusPendingCall, так как 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();
}

Обратите внимание на использование QDBusPendingReply для проверки типов аргументов в ответе. Если ответ не содержал ровно два аргумента (одна строка и один QByteArray), QDBusPendingReply::isError() вернёт true.

См. также QDBusPendingReply.

Документация по функциям-членам

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

Создаёт объект QDBusPendingCallWatcher для отслеживания ответов на асинхронный ожидающий вызов call и устанавливает родительский объект для этого объекта как parent.

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

Этот сигнал испускается, когда ожидающий вызов завершён, и его ответ доступен. Параметр self — это указатель на сам объект, передаваемый для удобства, чтобы слот мог получить доступ к свойствам и определить содержимое ответа.

[virtual] QDBusPendingCallWatcher::~QDBusPendingCallWatcher()

Уничтожает этот объект. Если этот объект QDBusPendingCallWatcher был последней ссылкой на незавершенный ожидающий вызов, вызов будет отменен.

bool QDBusPendingCallWatcher::isFinished() const

Возвращает true если ожидающий вызов завершил обработку и ответ был получен.

Обратите внимание, что состояние этой функции меняется только если вы вызываете waitForFinished() или если происходит внешнее событие D-Bus, что обычно происходит только при возврате к выполнению цикла событий.

См. также QDBusPendingReply::isFinished().

void QDBusPendingCallWatcher::waitForFinished()

Приостанавливает выполнение вызывающего потока до получения и обработки ответа. После возврата этой функции isFinished() должен возвращать true, указывая на готовность к обработке содержимого ответа.

См. также QDBusPendingReply::waitForFinished().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qdbuspendingcallwatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API