当前位置: 代码迷 >> QT开发 >> emit一个信号后,哪些对象可以收到这个信号?解决办法
  详细解决方案

emit一个信号后,哪些对象可以收到这个信号?解决办法

热度:88   发布时间:2016-04-25 04:03:14.0
emit一个信号后,哪些对象可以收到这个信号?
RT, 与槽无关。.。。。

------解决方案--------------------
额 怎么说
不是所有的对象都能接收的么  只要绑定槽函数就行的。
------解决方案--------------------
只要是绑定了这个信号的槽函数都能接收。
------解决方案--------------------
你这个信号的作用没有写到这个信号函数中啊
------解决方案--------------------
引用:
引用:C/C++ code?123456class PushButton :  public QPushButton{    Q_OBJECTsignals:    void sigKK();};
button就这点代码?
只是声明了一个信号,并没有在任何地方emit sigKK();当然哪里也接收不到信号。

buttonCK() ……

无语中,你写了2个sigKK()信号,button的那个sigKK()信号就是没有emit过。
------解决方案--------------------
翻来覆去的看代码,代码中就没有能够使button接收到sigKK()信号的地方。
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()了
  相关解决方案