Spec-Zone.ru › Qt 5.6

Класс QDBusPendingCallWatcher

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

Заголовок: #include <QDBusPendingCallWatcher>
qmake: QT += dbus
С момента: Qt 4.5
Наследуется от: QObject и QDBusPendingCall
  • Список всех членов, включая унаследованные

Публичные функции

QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent = Q_NULLPTR)
~QDBusPendingCallWatcher()
bool isFinished() const
void waitForFinished()
  • 31 публичная функция унаследована от QObject
  • 3 публичных функции унаследованы от QDBusPendingCall

Сигналы

void finished(QDBusPendingCallWatcher *self = Q_NULLPTR)
  • 2 сигнала унаследованы от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 1 публичный слот унаследован от QObject
  • 11 статические публичные члены унаследованы от QObject
  • 2 статических публичных члена унаследованы от QDBusPendingCall
  • 9 защищенных функций унаследованы от QObject

Подробное описание

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

Класс 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 и QDBusAbstractInterface::asyncCall().

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

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

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

QDBusPendingCallWatcher::~QDBusPendingCallWatcher()

Удаляет этот объект. Если этот объект QDBusPendingCallWatcher был последней ссылкой на незавершенный асинхронный вызов, вызов будет отменён.

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

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

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/archives/qt-5.6/qdbuspendingcallwatcher.html

Spec-Zone.ru

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