gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:24 27 4
gpt4 key购买 nike

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

换句话说,在 QGraphicsScene 中,我需要创建多个 QGraphicItem,它们显示存储在屏幕外某处的其他 QGraphicsItem 的部分。它有点像模型/ View 框架,其中一个 QGraphicsItem 充当模型,而其他 QGraphicsItem 充当 View - 显示(剪辑)另一个项目的部分。 (见附图) picture

我该怎么做?请注意,“ View ”不应是只读的。每个 View 都应该对鼠标移动、键盘输入使用react,并且应该在模型中的某些项目发生变化时正确地重新绘制自己。

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

Qt 4.8,VC2008 express,Windows平台。

--编辑--

我需要在场景中显示部分场景(或屏幕外 QGraphicsItem)。它有点像 3d 游戏中的门户。

最佳答案

经过一些研究,我发现(据我所知)Qt 没有针对这种情况的(记录的)方法。

所以我决定写几个我自己的方法来

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

这实际上可能有点棘手,因为我需要处理剪裁(按形状剪裁子项的项目)和重绘复杂组件,如 QGraphicsWidget,但据我所知这是可以完成的。此外,通过这样做,我将失去 QGraphicsView 提供的 BSP 优化,但对于我的特定场景,这应该是一个可以接受的权衡。

关于c++ - Qt4: "subview"使用 QGraphicsView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15413869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com