C ++ Qt GUI应用程序架构和模块接口

时间:2013-07-16 12:01:54

标签: c++ qt oop hierarchy signals-slots

我正在开发一个应用程序来操作简单的图形几何体,该几何体具有在父子关系中组织的若干区域的相关属性,例如可能有三个超级元素,每个超级元素包含两个带有图形元素的区域。我正在使用Qt使用QGraphicsScene构建应用程序QMainWindow内部的布局,以及一个单独的窗口来管理每个区域中的图形元素。

目前设置的方式是布局类设置超级超级创建区域和控制图形元素和单独窗口的 Manager 类。

要添加其他案例,每个区域也可以创建TCP客户端以连接到某个服务器并接收要以图形方式显示的消息,并且此客户端可能会遇到错误当前使用静态QMessageBox方法显示。

一般来说,我将自定义类与Qt类混合在一个对象层次结构中,其中子元素有时需要访问GUI所基于的根父级(MainWindow)。

  • 由于其中许多对象需要访问QGraphicsScene,我目前通过多次parent()调用或传递场景指针来混合访问它。
  • 我有时会使用Qt的信号槽机制来尝试通过接口创建更好的分离,但这会产生开销(我不确定与通过对象引用调用方法相比,[线程安全除外]的优点是什么)
  • 并非层次结构中的所有对象都继承QWidget,因此“父”引用并不总是有效,例如对于QMessageBox模态

我知道这是一个模糊的问题,但我只是在寻找关于典型GUI层次结构中的对象应该如何交互以及如何最佳地使用Qt的信号槽机制的一般提示。

我应该总是在课程中传递对MainWindow的引用吗?我应该全球保留这个参考吗?如果是孩子,不显示消息框但发出MainWindow显示的信号(但那么孩子将如何获得用户输入?)?

这个问题通常被称为什么?

0 个答案:

没有答案