Qt 中boundingRect的作用是什么?该如何解决

Qt 中boundingRect的作用是什么?
1.之前的理解是如果使用paint函数在自定义图形项中画图则只能在boundingRect返回的矩形范围中画图,但实际上paint函数中的图形可以比boundingRect返回的图形大,编译也可以通过,那么boundingRect的意义是什么?为什么要恰好包住我所要画的图形?
2.boundingRect的返回值大小如何在程序运行中随着我的矩形Item大小变化而变化?
------解决思路----------------------
本帖最后由 foruok 于 2015-01-07 09:05:19 编辑
boundingRect说君子协定,你告诉 QGraphicsScene 你的 Item 这么大。scene会根据它来检测 item 之间的碰撞、重叠等。所谓君子协定,并没有强制你必须在这个 boundingRect 内绘制,你画在外面, scene 也不管你啊,除非指定了特殊标记。

要在绘制过程中动态改变 boundingRect ,自己计算大小,在 boundingRect 方法中返回即可。

博客之星,投foruok一票
------解决思路----------------------
引用:
试过的,重载了了MouseMoveEvent函数,item就没法拖动了,应该是鼠标移动时候自动调用了event函数,item就没法动了


这说明你 override 的mouseMoveEvent() 中写的代码有问题。

注意:override 不叫重载(overload)
------解决思路----------------------
boundingRect我觉得你可以这么理解
这个就是你的widget和Qt框架之间的约定  也就是说你的这个widget在这个Rect内发生了update或变化 会触发Qt对这部分进行绘制 像Qt这样的 都是按需重绘区域的