• 7483阅读
  • 8回复

继承wheelEvent(QWheelEvent*e),无反应!!!(附代码+下载) [复制链接]

上一主题 下一主题
离线rockyluo
 

只看楼主 倒序阅读 楼主  发表于: 2009-02-10
写了个Lineedit类,继承QLineEdit
在Lineedit中继承了QWidget 的wheelEvent(QWheelEvent*),编译出来没啥反应
代码如下:

lineedit.cpp
  1. #include "form1.h"
  2. LineEdit::LineEdit(QWidget * parent, const char * name):QLineEdit(parent,name)
  3. {
  4.         this->setFocusPolicy(QWidget::WheelFocus);
  5. }
  6.                                                                                                                                                    
  7. void LineEdit::wheelEvent ( QWheelEvent *e )
  8. {
  9.         printf("wheelEvent\n");
  10.         if(e->delta()>0)
  11.         {      printf("Wheel  :  >0!\n");    }
  12.         else if(e->delta()<0)
  13.         {      printf("Wheel  :  <0!\n");    }
  14.         else
  15.         {      printf("Wheel  :  =0!\n");    }
  16.         e->accept();
  17.                                                                                                                                                    
  18. }
  19.                                                                                                                                                    
  20. void LineEdit::enterEvent(QEvent *e)
  21. {
  22.         printf("EnterEvent!\n");
  23.         QWidget::enterEvent(e);
  24. }
  25.                                                                                                                                                    
  26. LineEdit::~LineEdit()
  27. {
  28.                                                                                                                                                    
  29. }

里头顺便继承了个enterEvent(QEvent *e),屏幕上能顺利打出enterEvent(QEvent *e)中的“EnterEvent!”
但是对于wheelEvent ( QWheelEvent *e ),再怎么滑动鼠标滑轮都没得啥反应!!!
到底哪儿出问题???
附件: lineedit.rar (3 K) 下载次数:14
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线rockyluo

只看该作者 1楼 发表于: 2009-02-10
没人做过???
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线zuogenyu

只看该作者 2楼 发表于: 2009-02-10
QT版本?
运行平台?
请先确定你的鼠标滚轮在平台下可以正常工作。

呵呵,好久都没来这里逛了,今天来露个面。
离线rockyluo

只看该作者 3楼 发表于: 2009-02-10
qt2.3.7
redhat9.0
程序跑在qvfb上
鼠标滑轮能正常工作,比如用gedit打开一个文件,滑动滑轮,能正常上下翻!
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线zuogenyu

只看该作者 4楼 发表于: 2009-02-10
OK,我这里有这个环境,一会儿空了帮你写个demo
离线rockyluo

只看该作者 5楼 发表于: 2009-02-10
我上面有源代码
你直接下下去跑跑
附件:  lineedit.rar (3 K)
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线zuogenyu

只看该作者 6楼 发表于: 2009-02-12
昨天工作太忙,没来得及回复,不好意思。
已查证,QT2.3.7中ID为QEvent::Wheel的事件都屏蔽掉了,虽然在QWidget::event()里可以看见关于wheelEvent的case分支,但是在之前就被屏蔽,所以QWidget不会接收到此事件。
离线rockyluo

只看该作者 7楼 发表于: 2009-02-13
“但是在之前就被屏蔽....”
找了半天怎么没找到源代码处?
在哪个文件里?哪个函数处?
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线babybluema

只看该作者 8楼 发表于: 2010-02-01
本人qt新手,也遇到了同样的问题。能不能提供解决方案。
快速回复
限100 字节
 
上一个 下一个