Qt5中通过信号槽传递多个参数
来源:互联网 发布:删除表数据 sql 编辑:程序博客网 时间:2024/04/30 18:56
在Qt中的信号槽机制中,信号能携带的参数最多不超过6个。那么超过6个时怎么办呢?
这时,可以使用QByteArray作为参数,把需要传递的参数全部打包到这一个参数里,在槽函数里再将打包的参数逐项解析出来。
信号发送:
void signal_msg11001SearchPeople(QByteArray datagram);
void SearchFriends::slot_btnSearchClicked(){ QByteArray datagram; QDataStream out(&datagram,QIODevice::WriteOnly); out<<(quint8)cmbSex->currentIndex() <<(quint8)cmbAge->currentIndex() <<(quint8)cmbNation->currentIndex() <<(quint8)cmbProvince->currentIndex() <<(quint8)cmbCity->currentIndex() <<(QString)edtKeyword->text().trimmed(); emit signal_msg11001SearchPeople(datagram);}
信号接收:
void MySocket::slot_msg11001SearchPeople(QByteArray datagram){ qDebug()<<"slot_msg11001SearchPeople"; //首先从datagram参数里提取出要发送的各个字段数据 quint8 sex; quint8 age; quint8 nation; quint8 province; quint8 city; QString keyword; QDataStream in(&datagram,QIODevice::ReadOnly); in.setVersion(QDataStream::Qt_5_3); in>>sex >>age >>nation >>province >>city >>keyword; qDebug()<<"sex"<<sex; qDebug()<<"age:"<<age; qDebug()<<"nation:"<<nation; qDebug()<<"province:"<<province; qDebug()<<"city:"<<city; qDebug()<<"keyword:"<<keyword;}
注,此处由于参数中最后一个QString类型只有一个,直接解析到一个QString变量即可。如果有连续的2个以上的QString变量,则需要先读取4字节的表示长度的数据,然后截取该长度的数据填充到QString变量,余下的变量以此类推。
运行截图:
0 0
- Qt5中通过信号槽传递多个参数
- GridView中通过CommandArgument传递多个参数的例子
- 通过url地址传递多个参数
- 信号槽如何传递参数
- pyqt中信号与槽的参数传递。
- ibatis中传递多个参数
- ibatis中传递多个参数
- 通过CommandArgument传递多个参数的尝试
- 通过CommandArgument传递多个参数的尝试
- Qt5 中关于信号槽的改动
- Qt5中信号与槽新语法
- qt线程通信(通过信号触发来传递参数)
- 线程中通过信号和槽函数传递信息的时候,由于用到了自己定义的参数结构,所以使用qRegisterMetaType
- 信号和槽之间的传递参数
- pyqt4信号与槽之间参数传递
- pyqt4信号与槽之间参数传递
- pyqt信号和槽传递额外参数
- QT信号和槽参数传递
- poj 1258: Agri-Net
- 深度优先遍历算法和广度优先遍历算法简单图
- 【JavaSE】网络编程 Jpcap的使用
- 关于简单的JVM实现的讨论,记录备忘。
- 2-1. 厘米换算英尺英寸(15)
- Qt5中通过信号槽传递多个参数
- c#里xml格式文件的新增、修改、删除操作方法
- poj 2754:八皇后
- 数据库层adcfgclone.pl,执行adcrdb.sh出错
- 手机卫士知识点之------手机防盗功能1
- 【算法导论】矩阵乘法strassen算法
- Linux学习笔记——例说makefile 头文件查找路径
- C#跨线程访问
- ratingbar介绍及其例子