Qt OpenGL数据同步/模型/视图实现

时间:2015-11-14 17:22:19

标签: qt opengl qt-creator model-view qt5.5

我正在尝试使用Qt 5.5和OpenGL开发应用程序。该应用程序的基本工作是加载简单对象,修改它们在场景中的位置,并将它们与其他属性(材料,名称,父母/子女关系等)一起保存。

我现在唯一困扰的一周是我真的不知道如何处理同步数据的问题。假设我有一些SceneGraph类来处理所有SceneObjects。那些SceneGraph应该在SceneView-Widget中呈现,它可以用来通过转换来修改它的对象。现在,我如何告诉每个SceneView一个Object改变了它的位置?

我想到了模型/视图架构,但我不确定这个实现应该是什么样子。

在不同的Windows / Widgets中处理像这样的对象但仍然只有一个数据的最佳方法是什么?

  • 场景对象:

    • 保存网格信息(verticies,uvs等)
    • 有一个名字(QString)
    • 有材料
    • 具有存储位置,旋转和缩放信息的变换 (重要:这些数据类型应在所有视图中同步)
  • 场景图:

    • 包含不同的SceneObject并传递给SceneViews
  • SceneView:

    • 负责在任何QWindow中正确绘制场景的QWidget。
    • 是否有自己的相机可以四处移动。
    • 处理UserInput并允许转换SceneObjects。

1 个答案:

答案 0 :(得分:-1)

您可以使用信号和插槽观察SceneObjects的位置更新并在SceneView中处理它们。