【发布时间】:2015-11-14 17:22:19
【问题描述】:
我正在尝试使用 Qt 5.5 和 OpenGL 开发应用程序。该应用程序的基本工作是加载简单对象,修改它们在场景中的位置,并将它们与其他属性(材质、名称、父/子关系等)一起保存。
我现在唯一苦恼的一件事是我真的不知道我应该如何处理同步数据的问题。假设我有某种处理所有场景对象的 SceneGraph 类。这些 SceneGraph 应该在 SceneView-Widget 中呈现,该小部件可用于通过转换修改其对象。现在我如何告诉每个 SceneView 对象改变了它的位置?
我想了一会儿模型/视图架构,但我不确定这个实现应该是什么样子。
在不同的 Windows/Widgets 中处理类似对象但仍然只有一个数据的最佳方法是什么?
-
场景对象:
- 保存网格信息(verticies、uvs 等)
- 有一个名字(QString)
- 有材质
- 具有存储位置、旋转和缩放信息的变换 (重要提示:这些数据类型应在所有视图中同步)
-
场景图:
- 包含不同的SceneObjects并传递给SceneViews
-
场景视图:
- 负责在任何 QWindow 中正确绘制场景的 QWidget。
- 有自己的摄像头可以四处移动。
- 处理用户输入并允许转换场景对象。
【问题讨论】:
标签: qt opengl qt-creator model-view qt5.5