类似下面这样的method:
- <method name="CalcTime">
- <arg name="TimeStamp" direction="out" type="i">
- <doc>
- <line> TimeStamp: The value of the monotonic system clock (millisecond precision) when this signal was sent out.</line>
- </doc>
- </arg>
- <arg name="IsDaylightSaving" direction="out" type="i">
- <doc>
- <line> 1 is DST is currently used, 0 otherwise.</line>
- </doc>
- </arg>
- </method>
qdbusxml2cpp转换后的interface代码如下:
- public Q_SLOTS: // METHODS
- inline QDBusPendingReply<int, int> CalcTime()
- {
- QList<QVariant> argumentList;
- return asyncCallWithArgumentList(QLatin1String("CalcTime"), argumentList);
- }
- inline QDBusReply<int> CalcTime(int &IsDaylightSaving)
- {
- QList<QVariant> argumentList;
- QDBusMessage reply = callWithArgumentList(QDBus::Block, QLatin1String("CalcTime"), argumentList);
- if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 2) {
- IsDaylightSaving = qdbus_cast<int>(reply.arguments().at(1));
- }
- return reply;
- }
server端实现:
- int ChatMainWindow::CalcTime(int& val)
- {
- val = 8;
- return 1024;
- }
client端调用:
- org::example::chat *ifc;
- QDateTime dt = QDateTime::currentDateTime();
- short v1,v2;
- int v3;
- ifc = new org::example::chat(QString("org.example.chat"), QString("/"), QDBusConnection::sessionBus(), this);
- QDBusReply<int> reply = ifc->CalcTime(v3);
- qDebug() << "HHHHHHHHHHHH: " << reply;
- qDebug() << "HHHHHHHHHHHH: " << v3;
但是测试发现server端
没有被
执行,CalcTime返回的是一个随机值,v3返回值0
各位大侠,不知道这样的实现过程是否正确,望指点,谢谢!