如何划分程序——Qt, c++使用mvc逻辑



一开始我想说的是,我刚刚开始学习QT,所以我对这方面的知识真的不深。我写了一个简单的任务管理当然是一个控制台应用程序。我使用了类似MVC模式的逻辑(控制器、视图、动作、模型)。

以用户登录为例。我创建LoginController类的实例,然后LoginController创建LoginView的实例,它正在等待用户输入数据-登录名,密码。登录名和密码保存为LoginView成员。然后在LoginController中,我读取这些数据并将它们作为参数传递给UserVerificationAction构造函数。该类的构造函数将此数据保存为其类的成员。接下来,在LoginController中,我调用UserVerification类的方法- action()来验证登录名和密码。然后根据验证的结果,我创建MenuController实例或LoginFailiedView实例。这个机制是用户在整个程序(CreateUserController, AddTaskController)等。我使用了虚拟方法,所以MenuController由大约20行代码组成,非常容易阅读。

我想使用Qt实现GUI更精确,我想使用信号和插槽机制,但我有一个困境。也许最好在LoginView类中创建一个槽,然后创建动作实例,而不是将输入的数据传递给LoginView成员,然后在LoginController中创建实例的动作类。也许有更好的办法。我希望你能给我一些建议,告诉我如何正确地做这件事

注。对不起,我的英语

在Qt中,"控制器"的概念有点模糊。它往往是模型和视图的一部分。这并不意味着你不能编写一个控制器来链接模型和视图逻辑。

通常你看到的是一个视图,它为它的动作发出信号。然后你将这些直接连接到模型或子类上的兼容插槽,在子类中你已经编写了自己的插槽。

如果你有一个主窗口。这个窗口可能会创建一个模型和一个视图作为子窗口。然后它可以在连接模型和视图的窗口子类上定义槽。这意味着你的窗口既是视图又是控制器。

Qt提供模型/视图架构。
它引入了3个类:Model, View和Delegate来存储,呈现和编辑数据。

我相信这就是你想要的。

最新更新