事件过滤器:
bool Recordform::eventFilter(QObject *watched, QEvent *event)
{
if(watched==ui->textEdit->viewport()&&event->type()==31) //31表示滚轮事件QEvent::Wheel
{
QWheelEvent *k = static_cast<QWheelEvent *>(event);
if(k->delta()>0)
{
QScrollBar *bar = ui->textEdit->verticalScrollBar();
ui->textEdit->verticalScrollBar()->setValue(bar->value()-60);
}
else
{
QScrollBar *bar = ui->textEdit->verticalScrollBar();
ui->textEdit->verticalScrollBar()->setValue(bar->value()+60);
}
}
else
return QWidget::eventFilter(watched,event);
}
注:过滤QTextEdit的滚轮事件时,安装过滤器和事件对象都应该是ui->textEdit->viewport()