在Qt中信号和槽使用自定义的结构时,运行的时候发现报错不能识别结构体
解决办法:

  1. 一定要将自定义结构体定义为typedef struct
  2. 使用Q_DECLARE_METATYPE(结构体名),将结构体注册为元对象
  3. 使用QVariant打包数据并发送
  4. 在槽函数中将QVariant解包成自定义的结构体,即可使用

例子:
在datainfo.h文件中这样定义结构体

typedef struct search_list
{QString url;QString name;QDateTime startTime;QDateTime endTime;qint64 Time;
}search_list;
Q_DECLARE_METATYPE(search_list)

videosave.h文件

signals:void videosaveListaddSignal(const QVariant varValue);

record.h文件

public slots:    void serchList_add(const QVariant varValue);

将信号和槽链接

connect(my_videosave,SIGNAL(videosaveListaddSignal(QVariant)),my_record, SLOT(serchList_add(QVariant)));

发送信号:
videosave.cpp文件

search_list list;
...填充list...
QVariant varValue = QVariant::fromValue(list);  //使用QVariant打包数据emit videosaveListaddSignal(varValue);

槽函数接收信号:
record.cpp文件

void record::serchList_add(const QVariant varValue)
{if (varValue.canConvert<search_list>()){search_list list = varValue.value<search_list>();   //将QVariant解包后得到search_list结构体}
}

Qt中解决信号和槽不能使用自定义结构体的问题相关推荐

  1. Qt中的信号与槽机制解析

    注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用. 所谓信号槽,简单来说,就像是插销一 ...

  2. Qt静态函数中的信号和槽问题

    目录 介绍 Qt中的信号和槽 一般形式 当发送信号的地方为静态函数时 存在问题 解决方案 介绍 信号和插槽用于对象之间的通信.信号和插槽机制是Qt的一个核心特性,可能是与其他框架提供的特性最为不同的部 ...

  3. Qt工作笔记-信号与槽参数匹配问题

    今天,我把Qt3代码转化为Qt5,控件啥的都要换,李主任说了下为什么以前的信号和槽函数参数不匹配!!这句话让我对Qt中的信号与槽进一步有了了解. 下面的这个演示源码是基于这个博客的 https://b ...

  4. QT学习之②信号与槽,以及链接实现方法

    QT学习之②信号与槽 ~QQ:3020889729 ~小蔡 信号与槽的意义 信号与槽的实质(文字:举例) 信号与槽的工作(图解) 信号与槽的创建 信号的声明 槽函数的声明 槽函数的实现 (无重载)信号 ...

  5. Qt多线程中的信号与槽

    文章目录 1 多线程中的信号与槽 2 对象的依附性 2.1 对象的依附性 2.2 开启线程事件循环 2.3 线程事件循环的结束 2.4 设计实例 3 信号与槽的连接方式 3.1 Qt::DirectC ...

  6. Qt 多线程中地信号与槽

    Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...

  7. Qt编程中的信号和槽机制

    Qt编程中的信号和槽机制 在使用自定义类创建一个按钮之后,只能看到一个按钮的图形,但是使用鼠标点击并无任何反应,下面想要实现一个"点击按钮可以关闭窗口"的功能. 关闭窗口的功能可以 ...

  8. Qt eventFilter实现信号与槽

    对于Qt来说,信号与槽机制是其通信的一大亮点,但是Qt中也提供了其他的方法实现数据间的通信,如invokeMethod反射机制实现通信(https://blog.csdn.net/xx18030637 ...

  9. Qt的特性——信号和槽

    Qt的特性--信号和槽 1. Qt的特性 2. 信号和槽 2.1 信号和槽机制概述 2.2 典型应用示例 2.3 信号和槽的关联 2.4 断开关联 2.5 信号和槽的高级应用 1. Qt的特性 Qt在 ...

最新文章

  1. Linux下配置rdate时间服务器
  2. 牛客java面试题总结版(四)
  3. 5款强大的JVM 性能调优监控工具 !
  4. windows NT的意义和各个版本
  5. Java 线程的生命周期
  6. 【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)
  7. host 和TNS设置
  8. 表数据都删了一半,可我的表文件咋还是那么大
  9. 【英语学习】【WOTD】opusculum 释义/词源/示例
  10. 移动端web开发——视口
  11. 【leetcode】667. Beautiful Arrangement II
  12. View的draw onDraw dispatchDraw顺序
  13. java中的greeting_JAVA基础知识——字符串
  14. 从库找不到对应的被删除的记录
  15. css面试题之Flex布局
  16. //18. 定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()、fn2(),fn1()是虚函数,DerivedClass也有成员函数fn1()
  17. 三星+android+u盘模式,三星安卓机,如何开启开发者模式,进行USB调试?
  18. 农业技术:从能量的角度看农业革命(垄耕种植法)
  19. 工作一到五年的Java程序员该如何提升自己?
  20. python价格预测模型_Python 机器学习教程: 预测Airbnb 价格(2)

热门文章

  1. 可视化大屏项目:学生就业统计展示
  2. iNFTnews|Facebook、Twitter先后扑街,社交媒体的未来属于Web3?
  3. Java中如何将Set转List呢?
  4. aerosim matlab,Simulation of Flapping-wing Unmanned Aerial Vehicle using X-plane and Matlab/Simulink
  5. 教育统计与测量【2】
  6. Deleted function can‘t override a non-deleted function
  7. Adobe 产品注册机
  8. AUTOCAD学习笔记4:常用电器元件的绘制
  9. win10计算机睡眠怎么设置密码,win10系统如何配置唤醒密码?windows10设置唤醒密码的方法...
  10. 即便学会了Markdown,也没想到还可以这么干 —> 学会==提高效率