c++ - Qt 项目结构 - 需要建议

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

我目前正在从事一个基于 Qt4/QtCreator 的项目。我想就如何组织我的申请向您征求意见。

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

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

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

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

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

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

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

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

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

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

  4. 您如何命名您的类(class)。这个方案好还是要换?

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

最佳答案

使用 mvc architecture很棒。

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

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

4 - 你的类命名似乎不错。但我会更进一步并调用类:

  • 对于 View :ClassNameView
  • 对于 Controller :ClassNameController
  • 对于数据访问对象:ClassNameDAO
  • 模型:ClassName(和接口(interface)的 IClassName)

希望对你有帮助

关于c++ - Qt 项目结构 - 需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5471980/

相关文章:

c++ - 是否可以从 log4j 或 log4cxx 等文件配置 spdlog?

javascript - "Some JS files act more like libraries - they [...] never manipulate QML component instances directly"- 中间立场?

c++ - 如何在Qt中抓取视频帧?

c++ - 编辑 QTreeWidgetItem 同时保留文件扩展名

C++ system() 孤儿进程和僵尸进程

c++ - 在 Qt 中呈现图像列表的最佳方式是什么?

c++ - 将测量的时间差与 float 进行比较

c++ - CURL 不遵循 301 重定向,我需要做什么?

c# - 使用单一工具分析多种语言的日志文件。和日志记录框架的建议

c++ - 如何获取音频文件的总时间?