Qt 中boundingRect的作用是什么?该如何解决
Qt 中boundingRect的作用是什么?
1.之前的理解是如果使用paint函数在自定义图形项中画图则只能在boundingRect返回的矩形范围中画图,但实际上paint函数中的图形可以比boundingRect返回的图形大,编译也可以通过,那么boundingRect的意义是什么?为什么要恰好包住我所要画的图形?
2.boundingRect的返回值大小如何在程序运行中随着我的矩形Item大小变化而变化?
------解决思路----------------------
boundingRect说君子协定,你告诉 QGraphicsScene 你的 Item 这么大。scene会根据它来检测 item 之间的碰撞、重叠等。所谓君子协定,并没有强制你必须在这个 boundingRect 内绘制,你画在外面, scene 也不管你啊,除非指定了特殊标记。
要在绘制过程中动态改变 boundingRect ,自己计算大小,在 boundingRect 方法中返回即可。
博客之星,投foruok一票。
------解决思路----------------------
这说明你 override 的mouseMoveEvent() 中写的代码有问题。
注意:override 不叫重载(overload)
------解决思路----------------------
boundingRect我觉得你可以这么理解
这个就是你的widget和Qt框架之间的约定 也就是说你的这个widget在这个Rect内发生了update或变化 会触发Qt对这部分进行绘制 像Qt这样的 都是按需重绘区域的
1.之前的理解是如果使用paint函数在自定义图形项中画图则只能在boundingRect返回的矩形范围中画图,但实际上paint函数中的图形可以比boundingRect返回的图形大,编译也可以通过,那么boundingRect的意义是什么?为什么要恰好包住我所要画的图形?
2.boundingRect的返回值大小如何在程序运行中随着我的矩形Item大小变化而变化?
------解决思路----------------------
boundingRect说君子协定,你告诉 QGraphicsScene 你的 Item 这么大。scene会根据它来检测 item 之间的碰撞、重叠等。所谓君子协定,并没有强制你必须在这个 boundingRect 内绘制,你画在外面, scene 也不管你啊,除非指定了特殊标记。
要在绘制过程中动态改变 boundingRect ,自己计算大小,在 boundingRect 方法中返回即可。
博客之星,投foruok一票。
------解决思路----------------------
这说明你 override 的mouseMoveEvent() 中写的代码有问题。
注意:override 不叫重载(overload)
------解决思路----------------------
boundingRect我觉得你可以这么理解
这个就是你的widget和Qt框架之间的约定 也就是说你的这个widget在这个Rect内发生了update或变化 会触发Qt对这部分进行绘制 像Qt这样的 都是按需重绘区域的