QGraphicsview mousemove不触发鼠标移动事件

在Qt中使用QChart绘图时,遇到在QGraphicsView上处理鼠标事件的问题。尝试通过安装事件过滤器并重写eventFilter函数来捕获鼠标移动事件,发现需要对QGraphicsView的viewport()进行事件过滤才能成功触发。鼠标双击事件仍然无法捕获,但目前需求未涉及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用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);

这样就可以触发了。但是鼠标双击事件还是不行,但是暂时没用到双击,暂未解决。希望哪位大佬后期看到能解释下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值