Qt子线程信号与槽同时传递多张图像

在项目中会出现一个问题,图像处理时需要截取多个ROI区域,进行缺陷检测,但是检测出来的缺陷标记需要在Qt界面上显示出来,ROI区域无法整合在原图像上,因此,打算将各部分ROI区域分别显示在多个QLabel控件中。
但是信号函数中传递多个图像参数和其他结构参数比较多且复杂,现使用结构体封装多张图像,然后传递结构体,实现子线程的多图像的传递。
1、步骤

  1. 使用Q_DECLARE_METATYPE注册自定义结构体

    typedef  struct img {
    QImage img1;
    QImage img2;
    QImage img3;
    QImage img4;
    
    }img;
    Q_DECLARE_METATYPE(img);
    
    
  2. 使用qRegisterMetaType注册QVariant;

    qRegisterMetaType<QVariant>("QVariant");
    
  3. 将自定义结构体添加到QVariant中;

    img roi;
    roi.img1 = img11;
    roi.img2 = img22;
    roi.img3 = img33;
    roi.img4 = img44;
    
    QVariant dst;
    dst.setValue(roi);
    
  4. connect函数连接信号与槽;

    connect(myT, &thread_deal::send_data, this, &test_1::deal_data);
    
  5. 在槽函数中还原结构体成员;

    img rst = dst.value<img>();
    

2、结果
在这里插入图片描述
该工程是做一个简单的测试,原图像分成了4张ROI图像,分别显示在了4个QLabel控件上。具体代码可参考上面某篇传递vector<>参数的博客。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值