读书人

emit一个信号后哪些对象可以收到这个

发布时间: 2013-03-17 13:48:31 作者: rapoo

emit一个信号后,哪些对象可以收到这个信号?
RT, 与槽无关。.。。。
buttonCK是MainWindow的槽,它发出的 SIGKK也是MainWindow的sigKK,
MainWindow的sigKK连接到 MainWindow的showRev1,怎么说button也不能够接收到sigKK。
它的SigKK信号倒是连接了槽showRecv2,但是并没有触发Button的SIGKK的地方。所以button也没有发出自己的sigKK信号。
楼主,我不知道你是怎么解决了问题。
我只是觉得你的问题根本就不是个问题。
[解决办法]
LZ,你在PushButton和MainWindow的类定义中各自声明了名为sigKK的同名信号(注意,它们俩不是一个!而是分属这两个类的两个完全不同的信号,它们俩仅仅在你看来同名而已,编译器内部符号表里它们俩是两个完全不同的符号)。
所以,虽然你44行emit了,但这emit的是MainWindow类当前对象this的;虽然你27行connect了,但这connect的不是MainWindow的,而是PushButton类的button对象的!
所以,最终,很不幸,showRecv2槽肯定不会被执行,因为没有任何PushButton的实现代码emit出PushButton的那个sigKK信号!
[解决办法]
理解了就好啊。
[解决办法]
果然如此
connect(button, SIGNAL(sigKK()),this,SLOT(showRecv2())); //关联的是button的sigKK()
如果改成
connect(this, SIGNAL(sigKK()),this,SLOT(showRecv2())); //关联Mainwindow的sigKK()
就能调用到showRecv2()了

读书人网 >QT开发

热点推荐