首页| 论坛| 消息

标题:关于Qt中信号槽携带参数的数量
作者:不识字
日期:2023-12-01 15:38
内容:

我在看《Qt5开发及实例》第四版一书中,在第九章的示例CH905中有一处代码为
connect(fileLineEdit,SIGNAL(returnPressed()),this,SLOT(slotShow(QDir)));
connect(fileListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(slotDirShow(QListWidgetItem*)));两个槽函数的声明如下
public slots:
void slotShow(QDir dir);
void slotDirShow(QListWidgetItem *item);
第二个信号槽携带的参数类型数量一致,没有问题,但是第一个信号槽,信号无参数,槽有参数,代码运行却没有报错(Qt5.12.12),但是在fileLineEdit中按下回车键却没有反应。
我的问题是,信号槽连接时,如果信号携带的参数大于槽携带的参数(先不考虑参数类型),那么多的参数会被舍弃,信号槽能正常连接;
但如果信号携带的参数小于槽携带的参数呢?也会跟槽函数参数是否有默认值有关吗?


#1 [snow_man_0 12-03 04:53]
用新式的、成员函数地址做信号槽的连接,带参数检查

老式的,编译时没有参数检查。如果有名字空间,还要在信号槽里加名字空间,稍麻烦。新式的运行效率也高一些
#2 回 snow_man_0 的帖子 [不识字 12-05 15:06]
snow_man_0:用新式的、成员函数地址做信号槽的连接,带参数检查

老式的,编译时没有参数检查。如果有名字空间,还要在信号槽里加名字空间,稍麻烦。新式的运行效率也高一些
 (2023-12-03 04:53) 
你的意思是改用新式的连接方式,编译就会不通过了吗?也就是书上的这个连接是有问题的是吗?
#3 回 不识字 的帖子 [angelus 12-05 15:54]
不识字:你的意思是改用新式的连接方式,编译就会不通过了吗?也就是书上的这个连接是有问题的是吗? (2023-12-05 15:06) 
老式信号槽用字符串链接,编译不会检查的,只用在一些特殊的使用上
#4 回 不识字 的帖子 [dbzhang800 12-06 23:58]
不识字:你的意思是改用新式的连接方式,编译就会不通过了吗?也就是书上的这个连接是有问题的是吗? (2023-12-05 15:06) 
要相信自己的判断,书上是错的
#5 回 angelus 的帖子 [不识字 12-13 17:30]
angelus:老式信号槽用字符串链接,编译不会检查的,只用在一些特殊的使用上 (2023-12-05 15:54) 
嗯嗯,我现在老式的只用在一些同名信号上,其它都已经改用新式的了

<< 1 2 >> (1/2)

回复 发表
主题 版块