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)!