今天用QChart绘图表的时候,用ui设计界面的QGraphicsview控件布好局,直接提升为QChartview类,我自己没有重写这个继承类,再程序里都是直接操作ui->QGraphics,如设置抗锯齿
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
但是当我在想对这个QGraphics重写鼠标事件的时候,由于没有重写这个类,所以只能再主窗口中用事件过滤器来监控子控件的事件,其实我试过重写这个类 然后在类文件中 直接重写鼠标事件函数就可以,但是我就想用eventFilter 就硬刚 哈哈哈。。。。
1.安装事件过滤器
ui->graphicsView->installEventFilter(this);
2.重写eventfilter函数
bool ChartWidget::eventFilter(QObject *watched, QEvent *event)
{
if(watched == ui->graphicsview)
{
if(event ->type() == QEvent::MouseMove)
{
qDebug()<<"移动鼠标";
}
}
}
无论如何都没法触发,在网上看到设置鼠标跟踪,试了也不行
ui->graphicsView->setMouseTracking(true);
最后在对象后添加->viewport(),好像是返回一个widget*的视图控件
ui->graphicsView->viewport()->installEventFilter(this);
这样就可以触发了。但是鼠标双击事件还是不行,但是暂时没用到双击,暂未解决。希望哪位大佬后期看到能解释下