3 votes

Comment diviser un programme - Qt, C++ en utilisant la logique mvc

Au début, je veux dire que je viens de commencer à apprendre QT donc mes connaissances à ce sujet ne sont pas vraiment profondes. J'ai écrit une gestion simple des tâches, c'est une application console bien sûr. J'ai utilisé une logique qui ressemble au modèle MVC (contrôleurs, vues, actions, modèles).

Par exemple, prenons le login de l'utilisateur. Je crée une instance de la classe LoginController, puis LoginController crée une instance de LoginView qui attend que l'utilisateur entre des données - login, mot de passe. Le login et le mot de passe sont sauvegardés comme membres de LoginView. Ensuite, dans LoginController, je lis ces données et les passe comme paramètres au constructeur de UserVerificationAction. Le constructeur de cette classe a enregistré ces données comme membres de sa classe. Ensuite dans LoginController j'appelle la méthode de la classe UserVerification - action() qui valide le login et le mot de passe. Ensuite, selon le résultat de la validation, je crée une instance de MenuController ou une instance de LoginFailiedView. Ce mécanisme est utilisé dans tout le programme (CreateUserController, AddTaskController), etc. J'ai utilisé des méthodes virtuelles pour que MenuController consiste en environ 20 lignes de code et soit très facile à lire.

Je veux utiliser Qt pour implémenter une interface graphique pour être plus précis je veux utiliser les mécanismes de signaux et de slots mais j'ai un dilemme. Peut-être serait-il préférable de créer un slot dans la classe LoginView puis de créer une instance d'action au lieu de passer les données saisies aux membres du LoginView puis de créer une instance de la classe d'action dans le LoginController. J'aimerais que vous me donniez quelques conseils sur la façon dont je devrais le faire correctement.

p.s. Désolé pour mon anglais

1voto

jdi Points 38029

Dans Qt, le concept de "contrôleur" est légèrement flou. Il tend à faire partie à la fois du modèle et de la vue. Cela ne signifie pas que vous ne pouvez pas écrire un contrôleur pour lier un modèle et une logique de vue.

Normalement, ce que vous verrez est une vue qui émet des signaux pour ses actions. Ensuite, vous les câblez soit directement dans des emplacements compatibles sur un modèle, soit dans une sous-classe où vous avez écrit vos propres emplacements.

Si par exemple vous avez une fenêtre principale. Cette fenêtre peut créer un modèle et une vue comme enfants. Et elle peut ensuite définir des slots sur la sous-classe de la fenêtre qui relient le modèle et la vue. Cela signifie que votre fenêtre est une vue et un contrôleur.

0voto

Qt fournit Modèle/Vue l'architecture.
Il introduit 3 classes : Modèle, Vue et Délégué pour stocker, présenter et modifier les données.

Je crois que c'est ce que vous recherchez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X