【Qt】信号和槽传递自定义结构体
一、使用信号和槽传递自定义结构体
这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下。
一共有三种方法,可以让结构体在信号和槽之间传递。前两种方法可以让结构体在线程之间传递,最后一种方法只能在同一线程中传递。
Q_DECLARE_METATYPE
qRegisterMetaType(推荐)
直接传递
二、Q_DECLARE_METATYPE
需要宏Q_DECLARE_METATYPE和QVariant配合使用,首先使用宏Q_DECLARE_METATYPE将自定义结构以注册到metatype系统中,这样就能将自定义结构体包装成QVariant,然后在信号和槽之间通过传递QVariant,这样就能间接的传递自定义的结构体。
使用步骤如下:
1 使用Q_DECLARE_METATYPE注册自定义结构体
#include <QMetaType>
typedef struct People{int age;QString name;
}People;
Q_DECLARE_METATYPE(People);
2 将自定义结构体添加到QVariant
【Qt】信号和槽传递自定义结构体相关推荐
- Qt信号与槽传递自定义数据类型——两种解决方法
Qt信号与槽传递自定义数据类型--两种解决方法 参考文章: (1)Qt信号与槽传递自定义数据类型--两种解决方法 (2)https://www.cnblogs.com/tid-think/p/9300 ...
- Qt信号与槽传递QList动态数组
Qt信号与槽传递QList动态数组 根据实验,测试程序见下: - QString的QList动态数组能够通过signal-slot机制进行传递: - 自定义结构的QList动态数组也能通过signal ...
- QT信号与槽(自定义带参数的信号)
关于QT信号与槽的问题其实每个初学QT的人都会遇到,当时我需要做一个带界面的demo,在信号和槽的问题上,我需要的想法是让槽可以有参数的进行操作,但是系统内置的clicked()信号是不含参数的,这对 ...
- Qt中的QByteArray和自定义结构体之间的相互转换
在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data 1. QByteArray转换为自定义结构体 c ...
- Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)
目录 理论 程序 理论 在Socket中,数据一般是char型(一般情况下,其实最好是用uchar来传输,避免莫名其妙的错误,但用char也是可以的),而在Qt里面可以使用QByteArray,这个在 ...
- Qt中解决信号和槽不能使用自定义结构体的问题
在Qt中信号和槽使用自定义的结构时,运行的时候发现报错不能识别结构体 解决办法: 一定要将自定义结构体定义为typedef struct 使用Q_DECLARE_METATYPE(结构体名),将结构体 ...
- Qt线程间信号槽传递自定义数据类型(qRegisterMetaType的使用)
Qt线程间信号槽传递自定义数据类型(qRegisterMetaType的使用) #include <QMetaType> CFileDataModel::CFileDataModel(QO ...
- Qt信号和槽函数连接不成功原因
Qt信号和槽连接失败原因主要有以下几点: 1.槽函数并没有声明在类的public slots(或private slots或protected slots)里,因此,所想要成为槽函数的那个函数只是普普 ...
- QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE、枚举Q_ENUMS 、成员变量Q_PROPERTY、自定义结构体QVariantMap、List数据QVariantL
QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE.枚举Q_ENUMS .成员变量Q_PROPERTY.自定义结构体(QVariantMap ).List数据QVar ...
最新文章
- RxAndroid/java小记
- python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...
- 目录创建 android,创建目录浏览器 | Android 开发者 | Android Developers
- Python_sqlalchemy之多对多建表
- Python的Tkinter点击按钮触发事件
- 使用阿里云Python SDK管理ECS安全组
- 《D3.js数据可视化实战手册》—— 1.1 简介
- try、catch、finally 和 throw-C#异常处理
- iis开启php验证码,php结合GD库实现中文验证码的简单方法
- /bin/bash^M: bad interpreter: No such file or directory
- 【华为云技术分享】《跟唐老师学习云网络》 - Kubernetes网络实现
- promise catchfinally
- 优化器:torch.optim
- Visual Studio Code 使用Git进行版本控制
- Uber柳甄:Uber中国独立核算 谋求国内A股上市
- Android库和项目收集-图片
- python文件操作的几种方法with open,r,w,b
- 电影《Green book》观后感_已补全:携带着种族歧视的“光环”,艰难地获得朋友的相互依赖,依然得享受生活的酸甜苦咸。...
- SiTime硅晶振MEMS谐振子制作工艺详解
- Java-Collection集合之单列集合List,以及遍历方式
热门文章
- NetworkManagementService介绍
- Linux那些事儿 之 戏说USB(10)模型,又见模型
- 三维点云语义分割总览
- 原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
- 设置IDEA编辑过程直接通过F5刷新网页就可以实时查看JSP文件更新结果,而非通过重新run
- GSG灰猩猩插件合集包
- Blender 和Unreal Engine中的模块化3D建筑技能学习视频教程
- 洛谷P1057 传球游戏(记忆化搜索)
- 小米4手机在DDMS下获取data/data目录权限
- adobe就不敢把融合做得更好一点?