先让我激动一会儿 [捂脸]

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

最近在用Qt做个程序 用来参加比赛 期间总共遇到两次如标题的问题 也即是 莫名其妙的不触发槽函数了 而且原因也不一样

{先说明 我学习Qt依旧只是入门级 也许入不了大佬法眼  但是也许能帮助谁呢?}

 

第一种情况:

  代码执行到某一个地方的时候突然卡住了 怎么都不动弹,,, 死死的卡在174行 不知道为什么

[爬坑记录] Qt 代码卡住 不发信号 不触发槽 随笔 第1张

在174行之前的代码都能好好执行,,, 但是就是会卡在174行。。。

 

直到因为使用VS的习惯 不小心按下了F5... 启动调试 终于看到了一个异常... (图片来自网络)

[爬坑记录] Qt 代码卡住 不发信号 不触发槽 随笔 第2张

然后通过百度得知... 

{{一般跟指针有关,指向不确定的内存并且试图访问}} --来自: https://blog.csdn.net/suli_fly/article/details/21594977

大概就是java里面的空指针异常吧。。。 然后仔细检查了可能出现野指针的地方,,,

发现调用的对象指向的内存在执行到这里之前就被释放了.....

接着 修改了代码 修复了.... (除了问题之后第一件事情居然不是想到调试.... 该死QAQ... 但是Qt Creator调试是真的慢(狡辩)) 

 

具体是 本来需要实例化一个类之后给他传一个参数的 但是死活写不对代码,,, 然后就想了一个偏方,在实例化完之后,再通过设置器传递参数进去。。。

所以 代码是这样的

[爬坑记录] Qt 代码卡住 不发信号 不触发槽 随笔 第3张

但是 这样就会有一个问题 就是 在NW对象实例化完成之前 代码似乎就执行到这里了 所以 第二行实际上传了一个NULL进去... 所以 上面会出错  (第一行是解决了构造参数传参的问题之后)

这里的话 解释的不一定对 但是 NW确实是NULL 这个可以通过qDebug()来输出地址确定

所以 偏方是不行的 最终还是弄明白了Qt怎么重写构造函数

 

 

第二个

  这个是最中二的错误....

  [爬坑记录] Qt 代码卡住 不发信号 不触发槽 随笔 第4张

  这里需要如上一个问题中一样 传递一个NW对象进去.... 我实在是想不通我为啥会写个this进去(这个代码就是在NW对象那个类里面)...

  所以 造成的情况就是... 所有的信号、槽全部失效了,,, 这就导致

[爬坑记录] Qt 代码卡住 不发信号 不触发槽 随笔 第5张

代码执行到类似于这样的地方 就完全卡死了 一直阻塞.................

具体原因的话。。。 就不知道了... 大概需要了解Qt的工作原理吧... 似乎和静态方法不能使用this指针是一个原因

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄