利用Qt进行程序开发时,有时需要信号槽来完成参数传递。带参数的信号槽在使用时,有几点需要注意的地方。
第一点:当信号与槽函数的参数数量相同时,它们参数类型要完全一致。
第二点:当信号的参数与槽函数的参数数量不同时。
1:当我们的槽函数参数比信号的参数多时,将会出现QObject::connect: Incompatible sender/receiver arguments错误。
2:当槽函数参数比信号参数少时,而且前面的参数类型一致时,从左往右数多出来的参数将会被忽视。
例如有信号
void signal_fun(int i,string s);
有槽函数
void slot_fun(int i,string s) { qDebug()<<"槽函数收到的参数为:"<<i<<s; }
链接起来
connect(this,SIGNAL(signal_fun(int,string)),this,SLOT(slot_fun(int,string)));
输入代码
emit signal_fun(123,"hello");
那么则会有输出信息:槽函数收到的参数为123 hello。
原文:https://www.cnblogs.com/leocc325/p/12827940.html