1、类型转换
由于需要使用到Qt中的信号与槽传输信号,所以要将C++中的数据类型转换成Qt中的相应类型,比如: 之前用的vector要变成QVector,map编程QMap,string编程QString等
比如需要将:
#include <vector>
#include <map>
#include <string>
vector<map<string,string>> oneframe_channel_temp;
变成:
#include <QVector>
#include <QMap>
#include <QString>
QVector<QMap<QString,QString>> oneframe_channel_temp ;
否则会传输失败。
2、注意QVector要用push_back或者append添加数据,不能用emplace_back。
3、发送方写信号,信号不需要实现,类中声明即可。在数据需要传输时emit信号,如下:
//写在发送数据的类声明中
signals:
void Data_Send(QVector<QMap<QString,QString>> oneframe_channel);
//写在数据传输处
emit Data_Send(oneframe_channel_temp);
4、接收方写槽函数,需要写函数实现
//接收类 声明槽函数:
private slots:
void Data_Receive(QVector<QMap<QString,QString>> TEMP);
//槽函数实现:
void widget::Data_Receive(QVector<QMap<QString,QString>> TEMP){
qDebug()<<"收到数据";
for(unsigned int i=0;i<TEMP.count();i++){
for(auto it = TEMP[i].begin();it!=TEMP[i].end();it++){
qDebug()<<"键"<<it.key()<<"值"<<it.value();
}
}
}
5、连接信号与槽,注意信号和槽里面要写参数类型,无参可以不写
connect(Udp_Receive,SIGNAL(Data_Send(QVector<QMap<QString,QString>>)),this,SLOT(Data_Receive(QVector<QMap<QString,QString>>)));