gpt4 book ai didi

c++ Qt DBus 没有这样的信号 InterfacesAdded

转载 作者:行者123 更新时间:2023-11-30 05:33:36 29 4
gpt4 key购买 nike

我正在尝试使用以下代码连接到来自 ObjectManager 的 InterfacesAdded 信号:

UDisks::UDisks(QObject *parent) : QObject(parent), disks(UD_SERVICE,
UD_PATH, UD_INTERFACE_OBJECT_MANAGER, QDBusConnection::systemBus())
{
qDBusRegisterMetaType<InterfaceList>();
qDBusRegisterMetaType<ManagedObjectList>();

connect(&disks, SIGNAL(InterfacesRemoved(QDBusObjectPath, QStringList)), this, SLOT(mediaRemoved(QDBusObjectPath, QStringList)));
connect(&disks, SIGNAL(InterfacesAdded(QDBusObjectPath, InterfaceList)), this, SLOT(mediaAdded(QDBusObjectPath,InterfaceList)));

}

当我运行代码时,出现以下错误:

QObject::connect: No such signal org::freedesktop::DBus::ObjectManager::InterfacesAdded(QDBusObjectPath, InterfaceList)

这是 InterfaceList 的类型定义:

typedef QMap<QString, QMap<QString, QVariant>> InterfaceList;

最佳答案

通过调试 QtDBusViewer,我能够使用以下代码找到问题的解决方案:

QDBusConnection connection(QDBusConnection::systemBus());
connection.connect(UD_SERVICE, UD_PATH, UD_INTERFACE_OBJECT_MANAGER, "InterfacesAdded", this, SLOT(mediaAdded(QDBusObjectPath,InterfaceList)));

事实证明,我需要使用 QDbusConnection 类而不是使用 QObject 的连接方法来创建到信号的连接。

关于c++ Qt DBus 没有这样的信号 InterfacesAdded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com