7

我目前正在开发一个基于 Qt4/QtCreator 的项目。我想请教您如何组织我的申请。

  • 有 3 个单独的工具,每个工具都有自己的视图。所有视图都作为不可关闭的选项卡集成在主窗口中。我准备了 3 个视图:Tool1View、Tool2View、Tool3View

  • 每个工具都假设执行一些由用户操作触发的任务。但这些不是与数据库相关的操作(列表/添加/修改...) - 至少用户不会在 gui 元素中添加/修改/列出记录。

我正在考虑在 2 个类中实现每个工具:

  • 第一类 ToolXView 实现小部件和与 gui 更改相关的所有任务。

  • 第二类 ToolX 实现应用程序逻辑。该类的成员函数由 View 类触发。每当此类必须更新 GUI 元素时,它会调用 View 类中的专用函数。因此,这里不会直接调用小部件。

视图类和逻辑类将相互链接以允许 2 路通信。

现在我想知道这是否是一个好方法。请根据您的经验给我建议。

  1. 我打算将指向逻辑类的指针封装为视图类的属性,并将指向视图类的指针封装为逻辑类的属性。通过这种方式,我计划整合它们。

  2. 我应该使用信号/插槽来提供通信还是只调用成员函数?

  3. 我必须在 QtSql 数据库中存储一些数据。我是否应该为数据库访问提供一个单独的类。或者只是在逻辑类中实现单独的成员函数?

  4. 你如何命名你的课程。这个方案好还是我应该改变它?

感谢帮助。我很欣赏你的评论。

4

1 回答 1

5

使用mvc 架构很棒。

1 & 2 -在上面的链接中,您将看到 mvc 架构的 UML 图。关于它,我会将视图信号连接到控制器方法,然后从控制器调用视图方法。

3 -关于数据库访问,我将在您的架构中添加一个专门用于数据访问的数据访问部分。您可以有一个接口来定义数据访问对象签名,然后在数据库的专用类中实现它(这样您就可以在不修改整个应用程序的情况下更改数据位置)。

4 -你的班级命名似乎不错。但我会更进一步并打电话给课程:

  • 对于视图:ClassNameView
  • 对于控制器:ClassNameController
  • 对于 DataAccessObject:ClassNameDAO
  • 模型:ClassName(和接口的 IClassName)

希望有帮助

于 2011-03-29T12:04:07.520 回答