找回密码
 立即注册
收起左侧

为什么QTextEdit没有响应QWheelEvent事件

0
回复
5001
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2014-10-30 00:35:35 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 plusman 于 2014-10-30 00:39 编辑

这是《Qt Creator快速入门(第二版)》6-8的例子程序中的一个问题,
首先在Widget构造函数中执行了 ui->textEdit->installEventFilter(this);
在Widget类的实现文件中有如下代码:
bool Widget::eventFilter(QObject *obj, QEvent *event){      
      if(obj == ui->textEdit){
           if(event->type() == QEvent::Wheel){
               // 将event强制转换为发生的事件的类型            
               QWheelEvent *wheelEvent = static_cast<QWheelEvent*>(event);           
               if(wheelEvent->delta() > 0)                
                       ui->textEdit->zoomIn();            
               else                            
                       ui->textEdit->zoomOut();            
                // 该事件已经被处理            
                return true;        
           }else{
            // 如果是其他事件,可以进行进一步的处理
            return false;
           }
    }      
    else{
             return QWidget::eventFilter(obj,event);
    }
}
先在文本框中输入十几行字符,让文本框的滚动条出来,然后滚动鼠标滚轮让滚动条处于中间位置,
现在问题来了:此时如果上下滚动鼠标滚轮,为什么文本框收不到QWheelEvent事件呢,也就是说文本框中的文本并没有放大缩小,其中的文本只是按照常规上下滚动,而只有当滚动条滑块到达上下尽头的时候,文本框才会收到QWheelEvent消息,文本框中的文本才会放大缩小

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了