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

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

一:#include

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

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

使用抽象代码

#include//声明
#include
struc information{
    QString name;
    int age;
};

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

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

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

signals:
    void sent(QMap);
public slots:
    void  receive(QMap){}

}

 

你可能感兴趣的:(Qt,QT使用过程中的成功总结,qt信号槽参数注册)