【问题标题】:Qt Flowchart Application ArchitectureQt 流程图应用架构
【发布时间】:2011-04-09 20:02:33
【问题描述】:

我想在 Qt 中构建一个流程图应用程序来练习建模 GUI 应用程序。它只有可拖动的框和可以用直线连接的圆圈。

由于这是我的第一个 GUI 应用程序,我不确定通常如何设计这样的项目。这是我的两个设计。

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

2) 忘掉模型的东西,构建一个“以视图为中心”的应用程序。构建一组 Qt UI 元素子类的类(Box、Circle、Line 等)。然后在这些类之上为流程图构建应用程序逻辑。

哪个更好?你会有什么不同的做法?

【问题讨论】:

  • 我不会为图表元素使用小部件。这不是小部件的用途。根据平台的不同,您可能会遇到透明度问题,例如(鼠标)重叠小部件之间的事件处理。由于小部件是普通矩形,因此您必须在小部件中进行“碰撞检测”,然后执行或传递事件,但实际上“命中”的同级小部件不会收到事件,而是“画布小部件”等......在Qt中这样的自然选择是QGraphicsView。

标签: model-view-controller design-patterns qt architecture


【解决方案1】:

我会选择graphics view framework

查看 Qt 提供的 DiagramScene 示例。

它位于您的Qt examples folder/graphicsview/

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2011-11-16
    • 2013-07-08
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多