Qt项目结构 - 需要建议

时间:2011-03-29 11:47:06

标签: c++ qt qt4 qt-creator project-structure

我目前正在开发一个基于Qt4 / QtCreator的项目。我想问你关于如何组织我的申请的建议。

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

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

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

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

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

View类和逻辑类将相互链接以允许双向通信。

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

  1. 我打算将指向逻辑类的指针封装为视图类的属性,并将指向视图类的指针封装为逻辑类的属性。这样我计划对它们进行整合。

  2. 我应该使用信号/插槽来提供通话还是只调用会员功能?

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

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

  5. 感谢您的帮助。感谢您的评论。

1 个答案:

答案 0 :(得分:5)

使用mvc architecture非常棒。

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

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

4 - 您的班级命名似乎很好。但我会更进一步,并打电话给班级:

  • 对于视图:ClassNameView
  • For Controller:ClassNameController
  • 对于DataAccessObject:ClassNameDAO
  • Model:ClassName(和接口的IClassName)

希望有所帮助