Qt - 在一个3D场景中包含QGraphicsView的多个图层(QGLWidget)

时间:2011-10-30 10:00:45

标签: qt opengl graph qgraphicsview qglwidget

我目前正在评估实现可导航3D场景的可能性,该场景允许渲染多个2D图层。为了更精确一点,我想在3D环境中显示多个图形,以便精确定位这些图形之间的相似性和差异。考虑到下面的截图,会有两个图形(一个黑色,一个灰色),它们是等效的 - 对于不同的图形,异常节点可能会以红色突出显示。

two graphs in 3d

我正在使用Qt的Graphic View Framework并使用QGraphicsScene和几个QGraphicsItem建立了一个可编辑的图形编辑器,我将其与此项目分开。

Qt提供OpenGL support,例如QGLWidget,我查看了提供的示例。鉴于,我没有使用OpenGL(虽然我做了一些Java3D的工作),如果有些人可以分享他们的经验,我很乐意。

我想到了几个解决方案:

  1. 将每个QGraphicsView渲染为QPixmap并以3D形式显示,这会使图表可导航,但会禁止任何元素选择等。
  2. 为每个2D图元素创建等效的3D元素,并将每个QGraphicsView“转换”为3D表示。我想这将是一些工作(特别是因为我没有使用OpenGL)
  3. 也许有一种简单的方法可以在QGraphicScene中“放置”QGraphicsItem s,视图或QGLWidget s而不需要很多调整,并且仍会注册通常的“mouseclickevents “等等。
  4. 对于第一种实现,在不同层中显示多个图形的普通可导航“查看器”就足够了。但我希望将其保持可扩展性,以便在将来添加,例如,选择。

1 个答案:

答案 0 :(得分:0)

Qt3D项目提供了一个名为QGraphicsEmbedScene的类,它完全符合您的要求。