如何将复杂数据打包到 QtDBus 回复中
How to pack complex data into a QtDBus reply?
我必须在Qt中实现一个DBus服务,该服务必须返回遵循给定规范的相当复杂的数据片段。数据本质上是一系列经过测试的地图、数组、结构和其他变体。
我找不到一种方便的方法来将所有这些打包到我的方法的回复中。似乎我应该能够为此使用 QDBusArgument
类。例如,要创建一个字符串数组,我应该能够这样做:
QDBusArgument arg;
arg.beginArray( qMetaTypeId<QString>());
arg << "Hello" << "World";
arg.endArray();
QVariant var = arg.asVariant();
但这行不通。看来我需要煞费苦心地手动构建QList
变体。肯定有更好的方法吗?
我认为这样的事情应该对您有所帮助
QDBusMessage msg = QDBusMessage::createSignal( ... )
QStringList strlist;
strlist << "Hello" << "World";
msg << QVariant::fromValue( strlist);
QDBusConnection::systemBus().send( msg );
注: 如果使用自定义类型,则应使用 Q_DECLARE_METATYPE() 宏注册自定义类型。
相关文章:
- QT:管理来自 QNetworkReply 的回复
- q网络回复 无状态码或错误,但失败
- 回复计划游戏结果不会显示
- UDP 服务器无法发送回复,发送返回 -1,errno 为 22
- redis_client::get 需要一秒钟以上的时间来回复
- 如何防止递归功能调用(尾部回复)堆积在堆栈中
- 用于 ARP 回复数据包的 c/c++ pcap 过滤器表达式
- QNetwork回复 "unable to write"
- 如何提高QNetwork回复::d ownload进度信号频率
- 错误 = 0x801F0020筛选器回复消息'error_flt_no_waiter_for_reply'微筛选器驱动程序
- 发送命令并等待回复USB设备
- ZeroMQ Hello World Client - Server.来自服务器的回复显然没有到达
- 回复:等待完整消息(可变大小消息,线程)
- 未在此范围内声明回复
- 为什么我的服务器没有等待接收来自客户端的回复
- 使用 select() 的请求/回复服务器。无法写回客户端
- 网络回复后Qt更新
- ZMQ等待消息,让客户端等待回复
- ZeroMQ基本请求回复实现
- 如何将复杂数据打包到 QtDBus 回复中