Qt自定义信号槽的参数类型

在qt中使用信号槽时,qt给的数据类型很明显得不满足我们的要求,那么我们得去自定义一个数据类型,来满足我们的开发需求。

一:#include<QMetaType>

二:Q_DECLARE_METATYPE(ClassType)//  最好用在类或者结构体下面  这个声明主要是为了让qt所有模板都知道这个类型

三:qRegisterMetaType<ClassType>("ClassType")//进行注册    注意:这个函数一定要用在调用或者绑定信号槽前

使用抽象代码

#include<QMetatype>//声明
#include<QMap>
struc information{
    QString name;
    int age;
};

Q_DECLARE_METATYPE(information)  //让全世界的模板都知道这个数据类型的存在,如果注册QMap,QList...qt自身的的数据类型,则可以不用调用这个宏,直接注册就行。否则,必须调用该宏。

Class A(){
    Q_Object
    A(){
        qRegisterMetaType<information>("information")  //进行自定义的类进行注册
        qRegisterMetaType<QMap<QString,QString>>("QMap<QString,QString>")  //进行qt本身的类进行注册

public:
    sender()
    {
      connect(this,SIGNAL(sent(QMap<QString,QString>)),SLOT(receive(QMap<QString,QString>)));//绑定
    QMap<QString,QString> data;
    emit sent(data);//发送信号
    }

signals:
    void sent(QMap<QString,QString>);
public slots:
    void  receive(QMap<QString,QString>){}

}

 
  • 2
    点赞
  • 14
    收藏
  • 打赏
    打赏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

竹叶青水

你的打赏,我的动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值