关于QGraphicsItem接收不到tab事件的问题

在使用Qt开发类似思维导图应用时,遇到自定义GraphicsItem无法响应Tab键的问题。正常情况下,非Tab键事件传递顺序正确,但Tab键事件顺序异常。为解决此问题,需要重写QGraphicsView、QGraphicsScene的event方法以及QGraphicsItem的sceneEvent方法,以确保Tab键事件能被正确处理。
摘要由CSDN通过智能技术生成

一、背景

在用Qt做一个类似思维导图的软件,因此需要使用QGraphic框架,同时需要处理键盘的输入,但在输入’\t’时出现奇怪的现象。

二、问题

自定义的GraphicsItem接收不到tab键的keyPressEvent。当按下并释放非tab键时,事件的顺序是:view press event=>scene press event=>item press event=>item release event=>scene release event=>view release event,这个顺序是正常的;而当按下tab键时,事件的顺序是:scene press event=>view press event=>scene press event=>item release event=>scene release event=>view release,这个顺序是奇怪的,和预期的不一样。

三、解决方法

重写QGraphicsView和QGraphicsScene的event方法,重写QGraphicsItem的sceneEvent方法。

//....
class GraphicsScene : public QGraphicsScene{
   
	//....
protected:
    virtual bool event(QEvent *event)override{
   
        if(event->type() == QEvent::KeyPress){
   
            QKeyEvent *k = static_cast<QKeyEvent *>(event);
            if(k->key() == Qt::Key_Tab){
   
                th
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨秋水丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值