Класс QDBusInterface
Класс QDBusInterface является прокси для интерфейсов удалённых объектов. Подробнее...
| Заголовок: | #include <QDBusInterface> |
| CMake: | find_package(Qt6 COMPONENTS Dbus REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Dbus) |
| qmake: | QT += dbus |
| Наследуется от: | QDBusAbstractInterface |
Открытые функции
| QDBusInterface(const QString &service, const QString &path, const QString &interface = QString(), const QDBusConnection &connection = QDBusConnection::sessionBus(), QObject *parent = nullptr) | |
| virtual | ~QDBusInterface() |
Подробное описание
QDBusInterface — это универсальный класс-аксессор, используемый для выполнения вызовов удалённых объектов, подключения к сигналам, экспортируемым удалёнными объектами, и получения/установки значений удалённых свойств. Этот класс полезен для динамического доступа к удалённым объектам: то есть, когда у вас нет сгенерированного кода, представляющего удалённый интерфейс.
Вызовы обычно выполняются с помощью функции call(), которая строит сообщение, отправляет его по шине, ждёт ответа и декодирует ответ. Сигналы подключаются с помощью обычной функции QObject::connect(). Наконец, к свойствам обращаются с помощью функций QObject::property() и QObject::setProperty().
Следующий фрагмент кода демонстрирует, как выполнить математическую операцию "2 + 2" в удалённом приложении, называемом com.example.Calculator, доступ к которому осуществляется через сессионную шину.
QDBusInterface remoteApp( "com.example.Calculator", "/Calculator/Operations",
"org.mathematics.RPNCalculator" );
remoteApp.call( "PushOperand", 2 );
remoteApp.call( "PushOperand", 2 );
remoteApp.call( "ExecuteOperation", "+" );
QDBusReply<int> reply = remoteApp.call( "PopOperand" );
if ( reply.isValid() )
printf( "%d", reply.value() ); // prints 4 См. также Компилятор Qt D-Bus XML (qdbusxml2cpp).
Документация по членам-функциям
QDBusInterface::QDBusInterface(const QString &service, const QString &path, const QString &interface = QString(), const QDBusConnection &connection = QDBusConnection::sessionBus(), QObject *parent = nullptr)
Создаёт динамический объект QDBusInterface, связанный с интерфейсом interface объекта по пути path на службе service, используя указанную connection. Если interface пустая строка, созданный объект будет ссылаться на объединение всех интерфейсов, найденных путём интроспекции этого объекта. В противном случае, если interface не пустая, объект QDBusInterface будет кэширован для ускорения дальнейшего создания того же интерфейса.
parent передаётся конструктору базового класса.
Если удалённая служба service отсутствует или если при попытке получить описание удалённого интерфейса interface произошла ошибка, созданный объект не будет валидным (см. isValid()).
[virtual] QDBusInterface::~QDBusInterface()
Уничтожает интерфейс объекта и освобождает все используемые ресурсы.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qdbusinterface.html