0

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

它目前的设置方式是Layout类设置superssupers创建它们的区域,以及控制图形元素和单独窗口的Manager类。

再补充一点,每个区域还可以创建一个 TCP 客户端来连接到某个服务器并接收要以图形方式显示的消息,并且该客户端可能会遇到当前使用静态 QMessageBox 方法显示的错误。

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

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

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

我应该总是在我的类中传递对 MainWindow 的引用吗?我应该在全球范围内保留该参考吗?例如,孩子们是否应该不显示消息框,而是发出信号让 MainWindow 显示(但是孩子如何获得用户输入?)?

这个问题一般叫什么?

4

0 回答 0