首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkManager和Qt问题

NetworkManager和Qt问题
EN

Stack Overflow用户
提问于 2010-12-21 14:07:04
回答 4查看 1.9K关注 0票数 3

我对使用Qt4/Dbus还很陌生,我正在尝试用Qt获取一个访问点列表来发送/接收Dbus消息。我得到了以下错误:

代码语言:javascript
复制
org.freedesktop.DBus.Error.UnknownMethod
Method "GetAccessPoint" with signature "" on interface "org.freedesktop.NetworkManager.Device.Wireless" doesn't exist

代码是:

代码语言:javascript
复制
QStringList *netList = new QStringList();
    QDBusConnection sysbus = QDBusConnection::systemBus();
    QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager","org.freedesktop.NetworkManager.Device.Wireless",sysbus);
    if(callNM.isValid())
    {
        QDBusMessage query= callNM.call("GetAccessPoints");
        if(query.type() == QDBusMessage::ReplyMessage)
        {

            QDBusArgument arg = query.arguments().at(0).value<QDBusArgument>();
            arg.beginArray();
            while(!arg.atEnd())
            {                
                QString element = qdbus_cast<QString>(arg);
                netList->append(element);
            }
            arg.endArray();
        }else{
            std::cout<< query.errorName().toStdString() << std::endl;
            std::cout<< query.errorMessage().toStdString() << std::endl;
        }
        int x= netList->size();
        for(int y=0; y< x ;y++)
        {
            widget.avail_nets->addItem(netList->at(y)); // just print it to my gui from the stringlist array
        }

    }else{
            std::cout<<"fail" << std::endl;
    }

出什么问题了?我的名字是正确的,而且我完全遵循here的规范

EN

回答 4

Stack Overflow用户

发布于 2011-01-20 23:07:46

方法名为GetAccessPoints.

而你的错误是:

接口"org.freedesktop.NetworkManager.Device.Wireless“上签名为"”的

org.freedesktop.DBus.Error.UnknownMethod方法"GetAccessPoint“不存在

"GetAccessPoint".上突出显示因此,您可能在代码中拼写错误的方法名称,尽管您在此处粘贴的代码使用了正确的方法名称,但可能您修复了它,并忘记重新构建或清理项目?

票数 1
EN

Stack Overflow用户

发布于 2011-09-27 22:36:59

我也遇到过同样的问题,但后来我注意到,只有在有线设备上调用GetAccessPoints方法时才会发生这种情况。确保设备是无线设备(即DeviceType等于NM_DEVICE_TYPE_WIFI),一切都应该正常工作。

票数 1
EN

Stack Overflow用户

发布于 2015-04-03 12:35:01

我修改了这个,并为我自己工作

代码语言:javascript
复制
QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager/Devices/0","org.freedesktop.NetworkManager.Device.Wireless",sysbus);

结果就是

代码语言:javascript
复制
"/org/freedesktop/NetworkManager/AccessPoint/2"
"/org/freedesktop/NetworkManager/AccessPoint/1"

我认为对于特定的设备(无线设备),/org/freedesktop/NetworkManager不是正确的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4496669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档