完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
《div 》 《div 》 参考:《 Qt高级——QtDBus快速入门》《 DBus for IPC in Qt》
基础部分: Introduction to QtDBus class Client :: Method Call 方法1: 直接使用 Message 传递消息(Low-Level-API) // 传参数 QDBusMessage msg = QDBusMessage::createMethodCall(“com.myabc.service”, “/”, “com.myabc.interface”, “setName”); msg 《《 QString(“Bright”); QDBusMessage response = QDBusConnection::sessionBus().call(msg); // 获取返回值 QDBusMessage msg = QDBusMessage::createMethodCall(“com.myabc.service”, “/”, “com.myabc.interface”, “name”); QDBusMessage response = QDBusConnection::sessionBus().call(msg); // 判断 Method 是否被正确返回 if(response.type() == QDBusMessage::ReplyMessage) { // QDBusMessage的arguments不仅可以用来存储发送的参数,也用来存储返回值 // 这里取得 checkIn 的返回值 QString name= response.arguments().takeFirst().toString(); } 方法2: 通过 DBusInterface 调用方法(同步+异步) QDBusInterface interface(“com.myabc.service”, “/”, “com.myabc.interface”, QDBusConnection::sessionBus()); if(!interface.isValid()) { qDebug() 《《 qPrintable(QDBusConnection::sessionBus().lastError().message()); exit(1); } // 调用远程对象的方法 setName() interface.call(“setName”, “Bright”); // 调用 name() 并获取返回值 QDBusReply《QString》 reply = interface.call(“name”); if(reply.isValid()) { QString value = reply.value(); qDebug() 《《 “value = ” 《《 value ; } interface::asyncCall( ) 异步调用 QDBusPendingCall async = interface-》asyncCall(“setName”, “Brion”); // or use this: QDBusPendingReply《QString》 reply = interface-》asyncCall(“RemoteMethod”); async.waitForFinished (); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this); QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(callFinishedSlot(QDBusPendingCallWatcher*))); void MyClass::callFinishedSlot(QDBusPendingCallWatcher *call) { QDBusPendingReply《QString》 reply = *call; if (! reply.isError()) { QString name= reply.argumentAt《0》(); qDebug() 《《 “name = ” 《《 name; } call-》deleteLater(); } 方法3: 从XML导入代理类 A. 使用工具qdbuscpp2xml从object.h生成XML文件: qdbuscpp2xml -M test.h -o com.scorpio.test.xml 《div 》 《!DOCTYPE node PUBLIC “-//freedesktop//DTD D-BUS Object Introspection 1.0//EN” “http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd”》;; 《node》 《interface name |
|
|
|
只有小组成员才能发言,加入小组>>
882浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 10:05 , Processed in 0.622915 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号