背景:QScrollArea里添加了多个QChart ,QChart里的图像可以通过滚轮滚动实现放大缩小,但与此同时QScrollArea窗口也会相应的发生滚动,无法定在某个位置上,只放大缩小QChart里的图像。
解决办法:利用事件过滤器,屏蔽QScrollArea 滚动区域对滚轮事件的响应。
.h文件里添加事件过滤器(重写过滤器):
protected:
bool eventFilter(QObject *target, QEvent *event);
.cpp文件的构造函数里添加一下代码(注册要监听的窗口):
ui->scrollArea->viewport()->installEventFilter(this);//QSCrollArea 滚动区域是viewport()
过滤器的实现:
bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
if(target == ui->scrollArea->viewport())
{
if(event->type() == QEvent::Wheel)
{
//event->ignore();
return true; //只针对scrollArea窗口禁用滚轮滚动功能,返回true表示过滤
}
}
else
{
//event->accept();
return false;
}
return false; //返回false表示不过滤
}
完成。