QDBusInterface 类

QDBusInterface 类是远程对象接口的代理。 更多信息...

头文件 #include <QDBusInterface>
CMakefind_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmakeQT += 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() 函数访问属性。

以下代码片段演示了如何在远程应用程序(名为 com.example.Calculator)中执行数学运算 "2 + 2",并通过会话总线访问。

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 对象,与在服务 service 上的路径 path 对象的接口 interface 关联。使用给定的 connection。如果 interface 是一个空字符串,则创建的对象将引用使用反归检查找到的所有接口的合并。否则,如果 interface 不为空,QDBusInterface 对象将被缓存,以加快相同接口的进一步创建。

parent 被传递给基类构造函数。

如果远程服务 service 不存在或尝试获取远程接口 interface 的描述发生错误,则创建的对象将不有效(请参阅 isValid())。

[虚拟 noexcept] QDBusInterface::~QDBusInterface()

销毁对象接口并释放其所使用的任何资源。

© 2024 Qt公司有限公司。本文件中包含的文档贡献是相应所有者的版权。本文件提供的文档根据自由软件基金会发布的版本1.3的GNU自由文档许可证的条款提供。Qt及其相关标志是芬兰及全球其他国家的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。