Qt视图场景框架之一些“坑”

这篇博客总结了在使用Qt视图场景框架时可能遇到的问题,包括事件传递顺序、背景绘制、场景与视图区域的区别、QGraphicsItemGroup的位置特性和复杂变换后设置Item位置的技巧。通过理解这些陷阱,开发者可以更有效地避免错误,提升开发效率。
摘要由CSDN通过智能技术生成

        这里所谓“坑”也不一定是Qt的bug,主要还是帮助文档不好理解或啃的不够透彻导致,总结一下以免重蹈覆辙绕弯路。

       1、   Qt中事件传递是由父向子传递,同样在视图场景中事件传递是View->Scene->Item这样的顺序,所以上层的事件函数重写必须调用父类事件函数,实现事件的向下传递,不至于阻塞后面元素的事件处理。

       2、   在View中调用setBackgroundBrush方法会阻止Scene中drawBackground方法的调用,这个帮助中有说明,属于帮助看的不仔细。另外View/Scene中的drawBackground和drawForeground方法类似事件函数,调用顺序是View->Scene,所以在自定义View中drawBackground和drawForeground方法时需要调用父类方法。

      3、   QGraphicsScene::sceneRect和QGraphicsView::sceneRect是有区别的,QGraphicsScene::sceneRect是场景的实际范围大小,是一个抽象逻辑概念,例如用场景作为画布,为画布的实际大小。QGraphicsView::sceneRect则是在View中需要给Scene预留的区域大小,这个类似窗口概念&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值