当前位置: 首页 > ops >正文

遍历继承QObject的对象的属性

目前在用QtRemoteObjects来进行前后端的通讯,有很多的遍历(信号、槽、同步/异步调用等),也有一些不足(无法识别槽函数是被哪个客户端调用),但基本还算可以用。
QtRO客户端QRemoteObjectNode/QRemoteObjectReplica已经自带断线重连功能。在使用的过程中,我们将属性改变的信号连接到了特定的槽函数中,而这些槽函数中所做的一些处理,希望在重连后重新执行一遍。
而经过测试,在自动重连后,QRemoteObjectReplica的POD类型的属性会重新出Changed信号,而其他复杂类型不会,因此需要手动重新发出所有属性的改变信号,触发一下函数。
可以在与QRemoteObjectReplica::stateChanged相连接的槽函数中,这样处理:

 // 在 stateChanged 的槽函数中if(state == QRemoteObjectReplica::Valid) {const QMetaObject* meta = replica->metaObject();// 注意要使用propertyOffset()for (int i = meta->propertyOffset(); i < meta->propertyCount(); ++i) {QMetaProperty prop = meta->property(i);if (prop.hasNotifySignal()) {QMetaMethod signalMethod = prop.notifySignal();// 将属性数据读取出来,然后手动发射信号,从而触发槽函数// 所有属性的notify都只有一个参数signalMethod.invoke(replica, Q_ARG(QVariant, prop.read(replica)));}}}
http://www.xdnf.cn/news/11995.html

相关文章:

  • macOS 连接 Docker 运行 postgres,使用navicat添加并关联数据库
  • Inno Setup 脚本中常用术语释义
  • Python中库的安装使用过程详解
  • Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?
  • 嵌入式Linux之RK3568
  • 本地日记本,用于记录日常。
  • OpenHarmony 5.0横竖屏界面适配
  • SEM: Enhancing Spatial Understanding forRobust Robot Manipulation
  • QMap清空手动分配的内存
  • 在WordPress上添加隐私政策页面
  • 深入解析 C++ 多态:从原理到实战
  • 一键试衣,6G显存可跑
  • 6.promise在哪个线程执行?(2)
  • Three.js进阶之音频处理与展示
  • C++.vector 容器(1.5w字)
  • 虚幻网络执行宏-核心作用是根据网络环境中的不同执行环境
  • 抗辐射·耐温差·抑振动:解析猎板PCB真空塞孔在航天电子中的核心价值​
  • 图像局部精度超限情况
  • GDB的调试
  • HTB 靶机 SolarLab Write-up(Medium)
  • Nginx 安全设置问题
  • 计算机I/O系统:数据交互的核心桥梁
  • 论文导读 | 子图匹配最新进展
  • Office安装
  • C#编程过程中变量用中文有啥影响?
  • 【Python零基础入门系列】第7篇:Python中的错误与异常处理
  • 每日八股文6.4
  • C++ 变量二
  • geoai库的训练数据查看与处理
  • 核心机制:拥塞控制