[爬坑记录] Qt 代码卡住 不发信号 不触发槽

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

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

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

第一种情况:

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

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

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

然后通过百度得知... 

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

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

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

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

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

所以 代码是这样的

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

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

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

第二个

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

  

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

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

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

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

原文地址:https://www.cnblogs.com/cjdty/p/10827759.html