2010-09-08 18 views
3

我想在Qt中构建一个流程图应用程序来获得一些练习建模GUI应用程序。它所具有的可拖动框和可以用直线连接的圆圈。由于这是我的第一个GUI应用程序,我不确定通常如何设计这样的项目。这是我的两个设计。Qt流程图应用程序体系结构

1)构建一堆模型类(Box,Circle,Line等)和相关视图(例如BoxView,CircleView等)。模型对象具有颜色,x,y,宽度,高度等属性。视图类是Qt UI元素的子类。然后有像BoxMoveController这样的控制器从UI接收鼠标事件,并适当更新框视图和框模型。或者,如果box视图接收到事件,更新自身,然后将事件传递给控制器​​以更新模型,那么最好?现在,我为在模型上工作的流程图逻辑创建应用程序逻辑(如将行连接到框)。 UI在模型更新发生时通过模型通知视图对象来相应地自我更新。

2)忘记模型的东西,并建立一个“视图为中心”的应用程序。构建一些类(Box,Circle,Line等),它们是Qt UI元素的子类。然后在这些类的顶部为流程图构建应用程序逻辑。

哪个更好?你将做点什么不同的?

+1

我不会为图表元素使用小部件。这不是什么小工具。根据平台的不同,您可能会遇到透明问题,例如(鼠标)事件处理重叠的小部件之间。由于小部件是简单的矩形,因此您必须在小部件中执行“碰撞检测”,然后执行或传递事件,但实际上“碰撞”的兄弟小部件不会获得事件,而是“画布小部件“等等......在Qt中这样的自然选择是QGraphicsView。 – 2010-09-09 05:55:18

回答

1

我会去与graphics view framework

看看Qt提供的DiagramScene示例。

它位于您的Qt examples folder/graphicsview/

我相信它会给你一个关于如何实现这样一个应用Qt方式的好主意。