使用 Qt 未收到正确的 D-Bus 回复

Not receiving correct D-Bus reply with Qt

我想在 Gnome 上获得空闲时间。在终端中输入以下命令时有效:

dbus-send --print-reply --dest=org.gnome.Mutter.IdleMonitor /org/gnome/Mutter/IdleMonitor/Core org.gnome.Mutter.IdleMonitor.GetIdletime

我是 Qt D-Bus 的新手,不确定如何使用 QDBusInterface 获得相同的结果。我有以下代码:

QDBusInterface interface( "org.gnome.Mutter.IdleMonitor",
                          "/org/gnome/Mutter/IdleMonitor/Core",
                          "org.gnome.Mutter.IdleMonitor");

QDBusReply<int> reply = interface.call( "GetIdletime");
std::cout << "Reply: " << reply.value() << '\n';

每次都打印 0。如何获得正确的空闲时间?

我可以通过将 QDBusReply 的类型更改为 qulonglong 来实现此功能。工作代码是:

QDBusInterface interface( "org.gnome.Mutter.IdleMonitor",
                          "/org/gnome/Mutter/IdleMonitor/Core",
                          "org.gnome.Mutter.IdleMonitor");

QDBusReply<qulonglong> reply = interface.call("GetIdletime");