Qt 从GUI分离数据处理

Qt 从GUI分离数据处理,qt,oop,design-patterns,class-design,Qt,Oop,Design Patterns,Class Design,我正在开发一个具有图形用户界面的网络测试工具。我现在面临的问题是,我无法将底层数据与GUI类分开。 该应用程序由一个QMainWindow组成,该窗口随后生成几个其他QDialogs,并具有一些QWidgets。在每个类中都有一些使用QLineEdits、qpushbutton等的功能,并且每个类中都存储了数据。现在,为了使用有关设备的数据,例如,main窗口中的DeviceDiscovery小部件,我需要使用 deviceId = self.widget_deviceDiscovery.dev

我正在开发一个具有图形用户界面的网络测试工具。我现在面临的问题是,我无法将底层数据与GUI类分开。 该应用程序由一个
QMainWindow
组成,该窗口随后生成几个其他
QDialogs
,并具有一些
QWidgets
。在每个类中都有一些使用
QLineEdits
qpushbutton
等的功能,并且每个类中都存储了数据。现在,为了使用有关设备的数据,例如,
main窗口中的
DeviceDiscovery
小部件,我需要使用

deviceId = self.widget_deviceDiscovery.devices['devName'].id
而不是将其存储在整个GUI之外。但我如何才能做到这一点呢?在GUI类中存储数据似乎是不对的

在GUI类中存储数据似乎是不对的

当然不是,但我也不知道如何在UI中存储任何东西。数据存储在文件中。如果您的意思是从视图对象中获取内容,并在某些操作发生时应用它,则通常可以(ish)

例如,您有一个“登录”屏幕,其中有两个可编辑的文本视图和一个按钮。在代码中的某个地方单击按钮时,有一个组件(通常类似于观察者)从文本视图中提取值并启动登录过程。这是您的标准GUI框架,这没关系,因为这些框架实际上是按设计分开的,因为它们通常遵循MVC/P模式。数据和BL由您来处理,因为这些显然是应用程序的细节

这些框架的缺点是,测试变得有点难以完成,状态是从小部件中提取出来的。当需要支持不同的UI框架时,状态管理是为每个框架重新编写,这是一种开销


有一个名为的模式,它将两个层完全分开(GUI和表示),并允许您在不同的层中处理这两个概念。大多数绑定框架都是基于这个概念构建的。

让一个
数据
类与其他类的实例一起访问
数据
的属性怎么样?所以所有的数据都在一个类中。。。