|
本帖最后由 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消息,文本框中的文本才会放大缩小
|
|