当前位置:编程学习 > wap >>

求教QGraphicsItem调用update函数的原理

问题1:假如在一个场景中有多个QGraphicsItem(例如a,b,c,d,e,f,g),调用其中一个QGraphicsItem (例如a)中的 update()函数。 是不是 执行了a 所在的 QGraphicsView 中的paint函数 和 所有界面能显示出来的QGraphicsItem(例如 a,b,c,d能看到 e,f,g不能看到) 中的paint()函数。

问题2:当多个QGraphicsItem 在很短的时间内调用update函数 (估计是毫秒级别的时间段内)是不是场景只执行了一次重绘操作。

请大神帮小弟分析下。摆脱了

界面 Qt --------------------编程问答-------------------- 不要沉 顶啊 --------------------编程问答-------------------- 1、查了一下,Qt5中QGraphicsView没有paint成员函数;看源码,应该是需要update的时候将item所在的矩形标记为脏,然后通过Scene - View - Viewport逐次调用update( rect )。
2、如果是directUpdate,那么在QGraphicsScene中可以立即调用QGraphicsView的相关函数进行重绘,否则会在所有item循环update后进行重绘。

想要了解更多可以下载一套Qt源代码研究看看。 --------------------编程问答-------------------- 有点记不住了,可能会有点小偏差
1 item中的paint(Qpainter* painter, xxxx,xxxx);
这个painter是view中构建的
2 你调用item的update.
按照grphics system的设计思想,应该是所有可见这个item view需要重绘。
3 如果update是通过事件发送的话,不像是glwidget那种直接调用paint。
那么,Qt会帮你合并这个update事件。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,