我遇到了如何在Qt中设计我的类的问题,以防止混乱的代码.
我的主窗口有很多Buttons,Labels和其他部件.我不想让它太大,我想在一个单独的类中处理按钮按下的回调.
问题是,我想尽可能简单地将有关Button印刷机和字符串条目的所有信息传递LineEdits给类.所以,我创建了一个Data只保存数据的class().
我的测试代码中的另一个类被命名MainModule,它只是执行主循环并接收按钮按下的结果.此外,我必须根据发生的事情发送更改,MainModule以便我可以设置Labels等等.我用MainWindow和MainModule指向数据类的指针做了这个.
第4类和第3类只是一些类的例子,它们围绕我做了一些其他的功能MainModule.有些需要更多数据,有些需要更少,所以他们要么引用,Data要么只是传递一些变量.
我遇到的另一个问题是保存和加载数据.当我添加按钮或标签时,我必须在课程中进行很多更改.我想摆脱这种高耦合,而不要让MainWindow班级承担太多责任.

我也听说过设计模式模型 - 视图 - 控制器(MVC)可以很容易地处理这个问题,但是这里的问题是当我遇到问题时我不知道如何使用它,我MainWindow的视图,但也处理所有的控制同时进行?
小智 40
首先,你是对的.您绝对不希望您的课程承担其主要职能之外的职责.您的课程应该具有特定的,范围有限的目的.我建议阅读Uncle Bob的清洁代码,以便对此进行深入讨论.
你的问题:我假设您目前正在接收用户的操作上QButtons,QLineEdits等等,通过各种连接signals到你自己的slots(见Qt的信号和槽).您可能缺少的是您不仅限于将给定信号连接到单个插槽 - 您可以将它们连接到多个插槽中的多个插槽.
因此,如果您有两个类,一个UI相关,一个用于数据收集,这两个类都需要接收按钮,只需将点击连接到两个插槽即可.使您的数据收集类继承,QObject以便它具有信号/插槽机制.
作为一个例子,这里是图像的模型(从上面的Qt链接借用).我添加了红色绘制的信号: