c++ - Qt4: 使用QGraphicsView的"subview"

  显示原文与译文双语对照的内容
0 0

使用 QGraphicsView/QGraphicsScene/QGraphicsItem,,我需要创建另一个QGraphicsItem的多个视图。

换句话说,在QGraphicsScene中我需要创建多个 QGraphicItems,它显示某些它的他外围存储在屏幕上的QGraphicsItem 。 它类似于模型/视图框架,它的中一个QGraphicsItem类似于模型,它的他QGraphicsItems类似于视图。 ( 请参见附件) picture

我要怎么才能做到? 请注意,"视图"不应该只读。 每个视图应该对鼠标移动做出React,键盘输入,当模型中的某些项目更改时自动重画。

实现dumbest的方法是将隐藏项绘制到QImage上,然后在其他项目中显示该QImage的部分。 然而,这意味着浪费了大量的内存。 还有其他方法?

Qt 4.8,VC2008 express,Windows 平台。

--EDIT---

我需要在场景中显示场景( 或者屏幕外 QGraphicsItem ) 的部分。 就像是 3d 游戏中的入口。

时间: 原作者:

0 0

经过一些研究,我发现( 就我所知) Qt没有针对这种场景的( 已经记录) 方法。

所以我决定写一些我自己的方法

  1. 将QGraphicsItems层次结构绘制到任何 QPaintDevice ( 遍历子层次结构+ 调用所涉及的所有项的paint() 方法)
  2. 将输入( 鼠标/键盘) 事件从任意区域转换为选定的QGraphicsItem 。

这可以能有点麻烦,因为我需要处理剪裁( 按形状剪裁子级的项) 和重绘像QGraphicsWidget这样的复杂组件。 这里外,通过这样做我将失去QGraphicsView提供的that,但是对于我的特定场景,应该是可以接受的。

原作者:
...