QT QGraphicsView、QGraphicsScene和QGraphicsItem和OpenGL的使用问题

SiGoYi 2014-09-19 02:58:55
请教一个问题:是关于QT中 QGraphicsView、QGraphicsScene和QGraphicsItem使用的问题。
假设:我做一个游戏,在游戏中存在三个物体,自定义了3个QGraphicsItem子类,每个子类中都在paint函数中都使用OpenGL描画各自的一个物体。目前就我所知道的机制是当QGraphicsScene有变化时,会把事件传送给每个QGraphicsItem;假如三个物体只有一个物体需要对描画的内容改变,那么按现有的机制三个QGraphicsItem的paint函数都会被调用到,也就是说其他两个QGraphicsItem也被重新描画了,其实这是浪费性能的,因为其他两个物体并不需要重新描画,只要保持之前的图画就可以了。

我式过在其他两个QGraphicsItem的paint函数被调用时我什么也不做,那样也是不行的,如果不重新描画,这两个QGraphicsItem之前的图就没有了。

想请教一下怎么可以解决这个问题,即当有一个QGraphicsItem需要变化时,其他QGraphicsItem不重新描画也可以保持之前的图像?

如果能解决我的问题,我可以再加分,谢谢!
...全文
459 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_25036201 2015-07-28
  • 打赏
  • 举报
回复
请问楼主如何在QGraphicsItem中使用OpenGL绘图?Qt下的OpenGL绘图不是只能在QGLWidget中吗?
dzxxzr123 2014-09-24
  • 打赏
  • 举报
回复
lz,你的问题我也遇到了。参考QT中自带的关于OPENGL的DEMO后,好像只能使都跟着重新描画,另辟蹊径吧咱们
SiGoYi 2014-09-22
  • 打赏
  • 举报
回复
引用 2 楼 dbzhang800 的回复:
你这三个QGraphicsItem的 boundingRect() 位置有重合么?
应该有不是重合的item。 2楼意思是如果不重合就不会刷新么?
dbzhang800 2014-09-22
  • 打赏
  • 举报
回复
你这三个QGraphicsItem的 boundingRect() 位置有重合么?
SiGoYi 2014-09-22
  • 打赏
  • 举报
回复
自己顶一下,难道这么大个CSDN就没有人遇到和我相同的问题的人么?

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧