Qt中connect用于数据传输

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>>)));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值