gpt4 book ai didi

c++ - dbus session connections : connecting dbus signals with qt slots, 怎么办?

转载 作者:行者123 更新时间:2023-11-30 03:57:25 24 4
gpt4 key购买 nike

所以,对于我来说,我无法让我的对象连接到 session 总线。所以,我正在尝试将“my_obj”的“唤醒”连接到 dBus 信号“profileChanged”。但是,即使我确定(通过 qbusviewer)正在发出此信号,“唤醒”也不会运行。这是我的代码片段:

const QString service = "org.kde.Solid.PowerManagement";
const QString path = "/org/kde/Solid/PowerManagement";
const QString interface = "org.kde.Solid.PowerManagement";

QDBusConnection bus = QDBusConnection::sessionBus();

if (!bus.isConnected())
{
qDebug() << "Can't connect to the D-Bus session bus.\n";
}

class my_wake_up_class : public QObject
{
Q_OBJECT
public slots:
void wakeup(QString); //Does not run!
};

my_wake_up_class my_obj;

bool conn = bus.connect(service, path, interface, "profileChanged", &my_obj, SLOT(wakeup(QString)));
if (!conn) qDebug() << "not connected";

qDBus 显示“profileChanged”的格式为“void (QString)”,我没有收到任何错误或警告。这是该特定信号的 qdbus 输出:

signal void org.kde.Solid.PowerManagement.profileChanged(QString)

所以,我认为这会奏效。我确信我遗漏了一些隐藏在某些文档中的细节。有人知道我哪里出错了吗?

最佳答案

所以,qtforum.org 上的好人幽默了我的无知。显然,我需要启用 Qt 事件系统。通常这是由我没有包含的 QApplication 类完成的。包含后,一切正常。

关于c++ - dbus session connections : connecting dbus signals with qt slots, 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007786/

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