Qt signal slot遇到的一点点小问题,监控对象销毁之后不能触发slot
2018-01-27 12:15
302 查看
具体的代码就不写了,要讨论的是项目里面的一个代码片。
就是A类要监控B类里面的一个按钮,
于是在构建A类的时候
然后在代码运行的时候发现,只有第一次运行的时候,才会触发doKey()的事件。然后跟踪发现B类在执行一次后会被销毁,然后再重新创建,但A类是不销毁的,一直都存在,但之前建立的connect已经变成无效了,因为最初创建的那个B的对象已经没有了。
于是解决的办法就是在重新创建B类的地方重新建立连接:
这样就每一次都能触发dokey了。
就是A类要监控B类里面的一个按钮,
于是在构建A类的时候
connect(m_B,SIGNAL(keyDown()),this,SLOT(doKey()));
然后在代码运行的时候发现,只有第一次运行的时候,才会触发doKey()的事件。然后跟踪发现B类在执行一次后会被销毁,然后再重新创建,但A类是不销毁的,一直都存在,但之前建立的connect已经变成无效了,因为最初创建的那个B的对象已经没有了。
于是解决的办法就是在重新创建B类的地方重新建立连接:
m_B = new B(); connect(m_B,SIGNAL(keyDown()),this,SLOT(doKey()));
这样就每一次都能触发dokey了。
相关文章推荐
- Qt Model View中的State_MouseOver在xp下不能被触发的问题
- QTBrowserPlugin在销毁的时候会再次创建对象的问题
- 解决Tslib移植之后自己编写的QT程序不能使用触屏的问题
- QT信号(signal)和槽(slot)应注意的问题
- QT遇到问题:Object::connect: No such slot
- 遇到QT信号不能在派生类定义的问题 undefined referenc signals
- ASP.NET遇到问题,“对象不能从 DBNull 转换为其他类型”,记录一下~问题已经解决,谢谢大家~
- PyQt使用中遇到的若干问题(2)(事件触发,QImage对象转化,pyinstaller生成exe)
- Ios8之后, 定位的delegate不能触发的问题
- Qt中Signal与Slot参数问题<一>
- 小白第3天学Qt遇到的问题:添加图标预览可以看 运行之后就没有了
- QT Embedded-----QObject:元对象、signal/slot机制
- android 触发home之后activity销毁问题
- Ios8之后, 定位的delegate不能触发的问题
- AndroidStudio低版本(1.5)升级到高版本(2.1)之后你可能会遇到的其中一个项目构建问题
- Windows7下移植Qt4.8.4项目到QT5.2上时遇到的一些问题(包括三篇参考文章)
- [交叉编译qt4.8.4 for ARM]遇到到问题
- QT入门语法——signal,slot
- Qt之问题求助——当VS遇到“向Pro中添加代码”怎么办?
- Qt遇到奇怪的问题--FTH