gpt4 book ai didi

qt - 将数据处理与 GUI 分开

转载 作者:行者123 更新时间:2023-12-04 08:53:28 27 4
gpt4 key购买 nike

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

deviceId = self.widget_deviceDiscovery.devices['devName'].id

而不是能够将其存储在整个 GUI 之外。但我怎么能做到这一点?将数据存储在 GUI 类中似乎是不对的。

最佳答案

It just doesn't seem right to store the data in the GUI classes.

当然不是,但话又说回来,我不明白如何在 UI 中存储任何内容。数据存储在文件中。如果您的意思是您正在从 View 对象中获取内容并在某些操作发生时应用它,那通常是可以的。

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

这些框架的缺点是测试变得有些难以完成,并且状态是从小部件中提取的。当应该支持不同的 UI 框架时,状态管理会根据框架重新编写,这是一种开销。

有一个模式叫做Presentation Model ,它完全分离了两个层(GUI 和 Presentation)并允许您在不同的层中处理这两个概念。大多数绑定(bind)框架都建立在这个概念之上。

关于qt - 将数据处理与 GUI 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com