Класс QDBusAbstractInterface
Класс QDBusAbstractInterface является базовым классом для всех интерфейсов D-Bus в привязке Qt D-Bus, позволяющим получить доступ к удалённым интерфейсам. Подробнее...
| Заголовок: | #include <QDBusAbstractInterface> |
| CMake: | find_package(Qt6 COMPONENTS Dbus REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Dbus) |
| qmake: | QT += dbus |
| Наследует: | QObject |
| Наследуется от: |
Публичные функции
| virtual | ~QDBusAbstractInterface() |
| QDBusPendingCall | asyncCall(const QString &method, Args &&... args) |
| QDBusPendingCall | asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args) |
| QDBusMessage | call(const QString &method, Args &&... args) |
| QDBusMessage | call(QDBus::CallMode mode, const QString &method, Args &&... args) |
| QDBusMessage | callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot) |
| QDBusConnection | connection() const |
| QString | interface() const |
| bool | isValid() const |
| QDBusError | lastError() const |
| QString | path() const |
| QString | service() const |
| void | setTimeout(int timeout) |
| int | timeout() const |
Подробное описание
Классы, сгенерированные кодом, также наследуют от QDBusAbstractInterface, все методы, описанные здесь, также действительны для классов, сгенерированных кодом. В дополнение к описанным здесь, классы, сгенерированные кодом, предоставляют члены функций для удалённых методов, которые позволяют проверять правильность параметров и возвращаемых значений во время компиляции, а также соответствие типов свойств и параметров сигналов.
См. также Компилятор QDBus и QDBusInterface.
Документация по функциям-членам
[virtual] QDBusAbstractInterface::~QDBusAbstractInterface()
Освобождает ресурсы этого объекта.
template <typename Args> QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, Args &&... args)
Вызывает метод method в этом интерфейсе и передаёт args методу. Все args должны быть преобразуемы в QVariant.
Параметры call передаются удалённой функции через D-Bus в качестве входных аргументов. Возвращаемый объект QDBusPendingCall может использоваться для получения информации о ответе.
Он может быть использован следующим образом:
QString value = retrieveValue();
QDBusPendingCall pcall = interface->asyncCall(QLatin1String("Process"), value);
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall);
QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
this, SLOT(callFinishedSlot(QDBusPendingCallWatcher*))); Этот пример иллюстрирует вызов функций с 0, 1 и 2 параметрами и иллюстрирует различные типы параметров, переданные в каждом (первый вызов "ProcessWorkUnicode" будет содержать одну строку Юникода, второй вызов "ProcessWork" будет содержать одну строку и один массив байтов).
Примечание: До Qt 5.14 эта функция принимала максимум восемь (8) аргументов.
См. также asyncCallWithArgumentList().
QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args)
Выполняет вызов удалённого метода, указанного параметром method, в этом интерфейсе, используя args в качестве аргументов. Эта функция возвращает объект QDBusPendingCall, который может использоваться для отслеживания состояния ответа и доступа к его содержимому, как только он придёт.
Обычно вызовы должны выполняться с помощью asyncCall().
Примечание: Эта функция безопасна для потоков.
template <typename Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)
Вызывает метод method в этом интерфейсе и передаёт args методу. Все args должны быть преобразуемы в QVariant.
Параметры call передаются удалённой функции через D-Bus в качестве входных аргументов. Выходные аргументы возвращаются в сообщении ответа QDBusMessage. Если ответ является сообщением об ошибке, lastError() также будет установлено на содержимое сообщения об ошибке.
Он может быть использован следующим образом:
QString value = retrieveValue();
QDBusMessage reply;
QDBusReply<int> api = interface->call(QLatin1String("GetAPIVersion"));
if (api >= 14)
reply = interface->call(QLatin1String("ProcessWorkUnicode"), value);
else
reply = interface->call(QLatin1String("ProcessWork"), QLatin1String("UTF-8"), value.toUtf8()); Этот пример иллюстрирует вызов функций с 0, 1 и 2 параметрами и иллюстрирует различные типы параметров, переданные в каждом (первый вызов "ProcessWorkUnicode" будет содержать одну строку Юникода, второй вызов "ProcessWork" будет содержать одну строку и один массив байтов).
Примечание: До Qt 5.14 эта функция принимала максимум восемь (8) аргументов.
См. также callWithArgumentList().
template <typename Args> QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &method, Args &&... args)
Это перегруженная функция.
Вызывает метод method в этом интерфейсе и передаёт args методу. Все args должны быть преобразуемы в QVariant.
Если mode равно NoWaitForReply, то эта функция вернётся сразу после выполнения вызова, не дожидаясь ответа от удалённого метода. В противном случае, mode указывает, должна ли эта функция активировать цикл событий Qt, ожидая ответа.
Если эта функция повторно входит в цикл событий Qt для ожидания ответа, она исключит ввод пользователя. Во время ожидания она может передавать сигналы и другие вызовы методов в ваше приложение. Поэтому она должна быть готова к обработке повторного входа, когда вызов выполняется с помощью call().
Примечание: До Qt 5.14 эта функция принимала максимум восемь (8) аргументов.
См. также callWithArgumentList().
QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)
Выполняет вызов удалённого метода, указанного параметром method, в этом интерфейсе, используя args в качестве аргументов. Эта функция возвращает сообщение, которое было получено в качестве ответа, которое может быть обычным сообщением ответа QDBusMessage::ReplyMessage (указывающим на успех) или сообщением об ошибке QDBusMessage::ErrorMessage (если вызов не удался). Параметр mode определяет, как должен быть сделан этот вызов.
Если вызов выполняется успешно, lastError() будет очищен; в противном случае он будет содержать ошибку, возникшую в результате этого вызова.
Обычно вы должны использовать вызовы с помощью call().
Предупреждение: Если вы используете UseEventLoop, ваш код должен быть готов к обработке реентерации: другие вызовы методов и сигналы могут быть доставлены до возврата этой функции, а также другие очереди Qt сигналов и событий.
Примечание: Эта функция безопасна в многопоточном доступе.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)
Выполняет вызов удаленного метода, указанного параметром method, на этом интерфейсе, используя args в качестве аргументов. Эта функция возвращает значение сразу после помещения вызова в очередь. Ответ от удаленной функции передаётся в returnMethod на объекте receiver. Если произошла ошибка, вместо этого вызывается errorMethod на объекте receiver.
Эта функция возвращает true если помещение в очередь прошло успешно. Она не указывает, что выполненный вызов был успешен. Если произошла ошибка, вызывается errorMethod. Если помещение в очередь завершилось неудачно, функция возвращает false и ни один слот не будет вызван.
returnMethod должен иметь в качестве параметров типы, возвращаемые вызовом функции. Дополнительно, он может иметь параметр QDBusMessage в качестве последнего или единственного параметра. errorMethod должен иметь QDBusError в качестве единственного параметра.
См. также QDBusError и QDBusMessage.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot)
Это перегруженный метод.
Этот метод устарел. Используйте перегруженный вариант.
Выполняет вызов удаленного метода, указанного параметром method, на этом интерфейсе, используя args в качестве аргументов. Эта функция возвращает значение сразу после помещения вызова в очередь. Ответ от удалённой функции или любые ошибки, которые она генерирует, доставляются в слот slot на объекте receiver.
Эта функция возвращает true если помещение в очередь прошло успешно; она не указывает, что вызов был успешным. Если произошла ошибка, слот вызывается с сообщением об ошибке. lastError() не будет установлено в этих обстоятельствах.
См. также QDBusError и QDBusMessage.
QDBusConnection QDBusAbstractInterface::connection() const
Возвращает соединение, с которым связан этот интерфейс.
QString QDBusAbstractInterface::interface() const
Возвращает имя этого интерфейса.
bool QDBusAbstractInterface::isValid() const
Возвращает true если это действительная ссылка на удалённый объект. Возвращает false если при создании этого интерфейса произошла ошибка (например, если удалённое приложение не существует).
Примечание: при работе с удалёнными объектами не всегда возможно определить, существует ли он при создании QDBusInterface.
QDBusError QDBusAbstractInterface::lastError() const
Возвращает ошибку, возникшую при последней операции, или ошибку с недопустимым значением, если последняя операция не привела к ошибке.
QString QDBusAbstractInterface::path() const
Возвращает путь объекта, с которым связан этот интерфейс.
QString QDBusAbstractInterface::service() const
Возвращает имя службы, с которой связан этот интерфейс.
void QDBusAbstractInterface::setTimeout(int timeout)
Устанавливает таймаут в миллисекундах для всех будущих вызовов DBus до значения timeout. -1 означает значение таймаута DBus по умолчанию (обычно 25 секунд).
См. также timeout().
int QDBusAbstractInterface::timeout() const
Возвращает текущее значение таймаута в миллисекундах. -1 означает значение таймаута DBus по умолчанию (обычно 25 секунд).
См. также setTimeout().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qdbusabstractinterface.html