Qt信号槽响应问题

一、当信号槽连接返回false的时候检查:
1.检查头文件中是否缺少关键字:signals、(private )slot、Q_OBJECT

2.检查是否定义了该信号槽

3.检查信号或槽书写是否正确,在当前使用的Qt版本中是否存在该信号或槽

4.检查对应的sender或receiver是否正确

5.检查对应的sender或receiver是否为没有申请空间的空指针

注:检查时可分为三步。第一,检查信号是否被发出;第二,检查槽函数是否已执行;第三,临时新建一个布尔变量接收信号槽的创建结果,看是否成功创建。

二、当信号槽连接返回true,发射信号槽也无法响应的时候检查
信号的参数是否已经注册,如果是自定义的数据类型需要注册。否则槽无法响应
如下是我项目中的例子
void sigCrosswiseragInput(vector<vector>, HMX_AllEnumdefine::CrossLengthDegreedustInPut input); //横向毛刺录入界面刷新
其中TableDataForChar是自定义的结构体,HMX_AllEnumdefine::CrossLengthDegreedustInPut input是自定义的枚举体
2个参数都需要注册。不然信号槽连接成功,发射信号槽也无法响应。。。被这个细节问题坑了一小时。。。

实例:有个QPushButton控件点击后执行一个槽函数,各项检查均可通过,但是槽函数并未触发,最终原因是加了样式表的该控件实际的enabled状态为false。

发布了14 篇原创文章 · 获赞 5 · 访问量 6036

猜你喜欢

转载自blog.csdn.net/weixin_43277501/article/details/103159538