自学内容网 自学内容网

qt信号槽复杂参数传递,以结构体为例

参考博客:QT中信号和槽传递复杂参数,以QMap为例(QVariant)_qt 信号发送qmap-CSDN博客

前面的步骤都差不多:

1、首先包含头文件:#include <QMetaType> , 在使用信号类(或主窗口类)的构造函数中,通过如下的方式注册数据类型:qRegisterMetaType<QVariant>("QVariant");

2、然后分别申明信号和槽函数,并建立连接:

创建信号:signals: void signalMsgBox(QVariant);

创建槽:private slots: void slotMsgBox(QVariant);

建立connect的连接

3、在发送信号的地方进行数据封装下:

struct Test;//结构体Test

QVariant dataVar; //申明通用数据对象

dataVar.setValue(Test); //数据封装下

emit signalMsgBox(dataVar); //发送信号

4、在槽函数中进行数据还原:

Test test = dataVar.value<Test>();//还原为原来的数据结构类型

注意一个点:Q_DECLARE_METATYPE(Test ),这个需要在使用的头文件最后注册下

注意里面放的是结构体的名字,例如:

class A

{

};

Q_DECLARE_METATYPE(Test )


原文地址:https://blog.csdn.net/Littlehero_121/article/details/145211043

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!