Qt5中通过信号槽传递多个参数

在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_msg11001Se
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Qt信号机制是一种非常强大和灵活的通信机制,可以用于在对象之间传递信息。通过信号机制,可以实现对象之间的松耦合,并且能够传递任意类型的参数。 在Qt信号可以传递两个或更多的参数。当信号被触发时,可以通过传递参数传递额外的信息。例如,我们可以定义一个带有两个参数信号,并在某个特定条件下触发该信号。当信号被发射时,可以将两个参数的数值传递给与之相连的函数。 为了传递两个参数,我们需要在信号函数的声明使用相应的参数类型。例如,我们可以在信号的声明使用int和QString类型的参数,如下所示: signals: void mySignal(int arg1, QString arg2); 在函数的定义,我们也需要使用相应的参数类型来接收对应的参数值。例如,我们可以定义一个函数来处理带有两个参数信号: public slots: void mySlot(int arg1, QString arg2) { // 处理传递过来的两个参数 } 连接信号函数时,我们可以使用QObject::connect函数将信号函数绑定在一起。例如,我们可以这样连接信号: QObject::connect(sender, SIGNAL(mySignal(int, QString)), receiver, SLOT(mySlot(int, QString))); 在这个示例,当sender对象触发mySignal信号时,mySlot函数将被调用,并传递信号的两个参数值。 总结起来,Qt信号机制可以方便地传递两个或更多的参数,只需在信号函数的声明使用相应的参数类型即可。通过信号机制,可以实现对象之间的灵活通信,并且能够传递任意类型的参数

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值