• 5542阅读
  • 12回复

键盘消息转发问题 [复制链接]

上一主题 下一主题
离线downstairs
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-26
— 本帖被 XChinux 执行加亮操作(2010-01-26) —
main.cpp


  1.     QObject::connect(&aa, SIGNAL(keyPressEvent(QKeyEvent*)),&bb,SLOT(keyPressEvent(QKeyEvent*)));



Caa.cpp 继承自 QMainWindow
  1. void aa::keyPressEvent(QKeyEvent *e){
  2.     qDebug("aa\n");
  3. }



Cbb.cpp 继承自 QWidget
  1. void bb::keyPressEvent(QKeyEvent *e){
  2.     qDebug("bb\n");
  3. }


编译后运行时提似:

Object::connect: No such signal dd::keyPressEvent(QKeyEvent*) in .\main.cpp:15
Object::connect:  (sender name:   'ddClass')

并且 按键盘时只输出 aa 

QT很强大。。搞 了一夜。。。感觉还不错。望大家帮忙看下。谢谢


aa 把bb设置成中心控件了。
不好意思。。这次代码纠正了。。。大家帮忙看下a
[ 此帖被downstairs在2010-01-26 13:15重新编辑 ]
喜爱编程的猫头鹰
离线yangfanxing
只看该作者 1楼 发表于: 2010-01-26
最后一句很强大~~~
void dd::keyPressEvent(QKeyEvent *e){


    qDebug("bb\n");
}
两个类名都叫dd???冲突了???
PHPWind好恶心。。。不想看这种界面。。。
离线午小夜

只看该作者 2楼 发表于: 2010-01-26
omg...
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线XChinux

只看该作者 3楼 发表于: 2010-01-26
keyPressEvent()是事件不是信号,不能用connect()连接,事件以实现虚函数的方式来使用。
想转发事件,可以在事件虚函数中用sendEvent()来发送。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线benbenmajia

只看该作者 4楼 发表于: 2010-01-26
...雾沙沙啊雾沙沙
安然.....
离线yangfanxing
只看该作者 5楼 发表于: 2010-01-26
引用第4楼benbenmajia于2010-01-26 09:23发表的  :
...雾沙沙啊雾沙沙


benben是闽南人?
这个,可找到老乡了~~~
PHPWind好恶心。。。不想看这种界面。。。
离线benbenmajia

只看该作者 6楼 发表于: 2010-01-26
引用第5楼yangfanxing于2010-01-26 09:47发表的  :
benben是闽南人?
这个,可找到老乡了~~~

nonono....
[ 此帖被benbenmajia在2010-01-26 10:25重新编辑 ]
安然.....
离线supwater
只看该作者 7楼 发表于: 2010-01-26
谋事在人,成事在天!
离线downstairs

只看该作者 8楼 发表于: 2010-01-26
引用第1楼yangfanxing于2010-01-26 09:16发表的  :
最后一句很强大~~~
void dd::keyPressEvent(QKeyEvent *e){
    qDebug("bbn");
.......


不好意思。COPY过来的。忘了改了。实际上是两个类。。aa:: 和bb::
喜爱编程的猫头鹰
离线yangfanxing
只看该作者 9楼 发表于: 2010-01-26
引用第8楼downstairs于2010-01-26 13:18发表的  :
不好意思。COPY过来的。忘了改了。实际上是两个类。。aa:: 和bb::


那就是 XChinux 大大说的问题了~重新做个信号=槽接口就可以了~
PHPWind好恶心。。。不想看这种界面。。。
离线downstairs

只看该作者 10楼 发表于: 2010-01-26
问题貌似解决了。在main.cpp 中设置
bb.setFocus();
就OK了。。。
喜爱编程的猫头鹰
离线yangfanxing
只看该作者 11楼 发表于: 2010-01-26
呵~按我理解这个“OK”不是你本来要的那个“OK”;

bb.setFocus();是什么东东啊~~~它就可以激发你的keyPressEvent滴!!!所以当然执行bb::keyPressEvent()啦~~~

相当于你的connect做的是无用功~~~
PHPWind好恶心。。。不想看这种界面。。。
离线benbenmajia

只看该作者 12楼 发表于: 2010-01-26
引用第11楼yangfanxing于2010-01-26 14:53发表的  :
呵~按我理解这个“OK”不是你本来要的那个“OK”;
bb.setFocus();是什么东东啊~~~它就可以激发你的keyPressEvent滴!!!所以当然执行bb::keyPressEvent()啦~~~
相当于你的connect做的是无用功~~~

孩子,解决的是一个问题,没解决的是另外一个问题
安然.....
快速回复
限100 字节
 
上一个 下一个