• 4055阅读
  • 0回复

QTDBUS中多输出参数的method如何实现和调用? [复制链接]

上一主题 下一主题
离线mecland
 
只看楼主 倒序阅读 楼主  发表于: 2013-12-30
类似下面这样的method:
  1. <method name="CalcTime">
  2.             <arg name="TimeStamp" direction="out" type="i">
  3.                     <doc>
  4.                             <line> TimeStamp: The value of the monotonic system clock (millisecond precision) when this signal was sent out.</line>
  5.                     </doc>
  6.             </arg>
  7.             <arg name="IsDaylightSaving" direction="out" type="i">
  8.                     <doc>
  9.                             <line> 1 is DST is currently used, 0 otherwise.</line>
  10.                     </doc>
  11.             </arg>
  12.     </method>


qdbusxml2cpp转换后的interface代码如下:
  1. public Q_SLOTS: // METHODS
  2.     inline QDBusPendingReply<int, int> CalcTime()
  3.     {
  4.         QList<QVariant> argumentList;
  5.         return asyncCallWithArgumentList(QLatin1String("CalcTime"), argumentList);
  6.     }
  7.     inline QDBusReply<int> CalcTime(int &IsDaylightSaving)
  8.     {
  9.         QList<QVariant> argumentList;
  10.         QDBusMessage reply = callWithArgumentList(QDBus::Block, QLatin1String("CalcTime"), argumentList);
  11.         if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 2) {
  12.             IsDaylightSaving = qdbus_cast<int>(reply.arguments().at(1));
  13.         }
  14.         return reply;
  15.     }
server端实现:
  1. int ChatMainWindow::CalcTime(int& val)
  2. {
  3.     val = 8;
  4.     return 1024;
  5. }
client端调用:
  1. org::example::chat *ifc;
  2.     QDateTime dt = QDateTime::currentDateTime();
  3.     short v1,v2;
  4.     int v3;
  5.     ifc = new org::example::chat(QString("org.example.chat"), QString("/"), QDBusConnection::sessionBus(), this);
  6.     QDBusReply<int> reply = ifc->CalcTime(v3);
  7.     qDebug() << "HHHHHHHHHHHH: " << reply;
  8.     qDebug() << "HHHHHHHHHHHH: " << v3;

但是测试发现server端没有执行,CalcTime返回的是一个随机值,v3返回值0
各位大侠,不知道这样的实现过程是否正确,望指点,谢谢!


快速回复
限100 字节
 
上一个 下一个