QtDBus简单示例使用PowerManager

时间:2015-08-26 12:38:59

标签: qt qdbus

我正在尝试使用 QtDbus 与我系统中PowerManager提供的界面进行通信。我的目标非常简单。我将使用DBus接口编写代码导致我的系统休眠

所以,我安装了 d-feet 应用程序,看看我的系统上有哪些接口DBus ,以及我看到的内容:

enter image description here

正如我们所见,我有一些接口和方法,我可以从中选择一些东西。我的选择是 Hibernate(),来自界面 org.freedesktop.PowerManagment

在这个目标中,我准备了一些非常简单的代码来理解机制。我当然使用 Qt 库:

#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
#include <QtCore/QStringList>
#include <QtDBus/QtDBus>
#include <QDBusInterface>
int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv);

    if (!QDBusConnection::sessionBus().isConnected()) {
        fprintf(stderr, "Cannot connect to the D-Bus session bus.\n"
                "To start it, run:\n"
                "\teval `dbus-launch --auto-syntax`\n");
        return 1;
    }
    QDBusInterface iface("org.freedesktop.PowerManagement" ,"/" , "" , QDBusConnection::sessionBus());
    if(iface.isValid())
    {
        qDebug() << "Is good";
        QDBusReply<QString> reply = iface.call("Methods" , "Hibernate");
        if(reply.isValid())
        {
            qDebug() << "Hibernate by by " <<  qPrintable(reply.value());
        }

        qDebug() << "some error " <<  qPrintable(reply.error().message());

    }

    return 0;
}

不幸的是我的终端出错:

  

好的   一些错误接口“(null)”上带有签名“s”的方法“方法”不存在

请告诉我这段代码有什么问题?我确信我忘记了函数 QDBusInterface :: call()中的一些参数但是什么?

0 个答案:

没有答案