本页内容

QDBusAbstractAdaptor Class

QDBusAbstractAdaptor 类是 D-Bus 适配器类的基类。更多内容...

标题: #include <QDBusAbstractAdaptor>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
继承自: QObject

公共函数

受保护函数

QDBusAbstractAdaptor(QObject *obj)
bool autoRelaySignals() const
void setAutoRelaySignals(bool enable)

宏

详细说明

QDBusAbstractAdaptor 类是所有打算使用 D-Bus 向外部世界提供接口的对象的起点。 实现方法是将一个或多个从 QDBusAbstractAdaptor 派生的类附加到普通的QObject 上,然后使用QDBusConnection::registerObject 注册该QObject 。QDBusAbstractAdaptor 对象旨在作为轻量级包装器,主要只是将调用转发到实际对象(其父类)并转发来自该对象的信号。

每个从 QDBusAbstractAdaptor 派生的类都应在类定义中使用Q_CLASSINFO 宏来定义其所实现的 D-Bus 接口。请注意,通过这种方式只能暴露一个接口。

QDBusAbstractAdaptor 使用 D-Bus 标准的信号、插槽和属性机制(QObject )来确定应将哪些信号、方法和属性导出到总线上。由 QDBusAbstractAdaptor 派生类发出的任何信号都将自动通过该对象已注册的任何 D-Bus 连接进行转发。

从 QDBusAbstractAdaptor 派生的类必须使用new 运算符在堆上创建,且用户不得手动删除它们(当它们所关联的对象被删除时,这些类将自动被删除)。

另请参阅 “使用适配器”和“QDBusConnection ”。

成员函数文档

[explicit protected] QDBusAbstractAdaptor::QDBusAbstractAdaptor(QObject *obj)

创建一个以obj 为父对象的QDBusAbstractAdaptor。

[virtual noexcept] QDBusAbstractAdaptor::~QDBusAbstractAdaptor()

销毁适配器。

警告: 当适配器所引用的实际对象被销毁时,适配器会 自动被销毁。请勿手动删除适配器。

[protected] bool QDBusAbstractAdaptor::autoRelaySignals() const

如果来自真实对象(参见 object())的自动信号转发已启用,则返回true ;否则返回false 。

另请参阅 setAutoRelaySignals()。

[protected] void QDBusAbstractAdaptor::setAutoRelaySignals(bool enable)

切换来自真实对象(参见 object())的自动信号转发功能。

自动信号转发是指将父对象上那些在两个类中方法签名完全相同的信号进行信号间连接。

如果将enable 设置为true,则连接信号;如果设置为false,则断开所有信号的连接。

另请参阅 autoRelaySignals()。

宏文档

Q_NOREPLY

Q_NOREPLY 宏可用于标记一个将被调用的方法,以便在从QDBusInterface::call() 返回时无需等待该方法处理完成。被调用的方法不能返回任何输出参数;如果返回了,此类参数将被丢弃。

您可以在自己的适配器中使用此宏,方法是在类声明中将其置于方法的返回值(必须为“void”)之前,如下例所示:

Q_NOREPLY void myMethod();

在方法实现中(类声明之外)是否使用该宏是可选的。

另请参阅 《使用Qt D-Bus 适配器》。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.