QGraphicsWidget收不到鼠标、键盘消息解决

在使用Qt的GraphicsView Framework时,遇到QGraphicsWidget无法响应鼠标和键盘事件的问题。经过排查发现,必须实现`boundingRect()`和`shape()`函数,并确保返回的矩形区域和QPainterPath非空且足够大。同时,设置ItemIsSelectable和ItemIsFocusable标志也是关键。只有这样,QGraphicsWidget才能正确接收和处理鼠标键盘事件。

问题的提出:

最近利用Graphics View Framework 实现一需求,其中要求鼠标按住QGraphicsWidget实现随意拖动,但调试发现鼠标、键盘的任何消息,QGraphicsWidget都无法响应,ItemIsMovable 、ItemIsSelectable 、ItemIsFocusable都已经通过如下代码设置:

setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemUsesExtendedStyleOption);

接受鼠标悬浮事件也设置为true: 

setAcceptHoverEvents(true);

依然不响应鼠标键盘消息,即下面代码都不响应:

    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override;

	virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)   override;

	virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;

	virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;

    virtual void keyPressEvent(QKeyEvent *event) override;

    virtual void keyRele
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值