Je fais un refactoring. J'implémente un modèle Model-View-Controller. La vue est un widget Qt.MVC avec widget Qt qui utilise une sous-classe QAbstractTableModel
À l'origine, le widget Qt créait une nouvelle instance d'une sous-classe QAbstractTableModel sur le tas. Appelons-le FooTableModel.
par exemple
Widget::Widget(QWidget* parent)
:
QWidget(parent)
m_model(new FooTableModel(this))
{
Dois-je créer une nouvelle instance de FooTableModel dans le modèle MVC à la place?
Ce faisant, je pourrais créer une dépendance à la vue (en supposant que je passe encore le pointeur du widget au constructeur FooTableModel)
Sinon, je ne pouvais passer rien au constructeur FooTableModel et supprimer manuellement le FooTableModel dans mon Modèle MVC. *
La dernière option consisterait à laisser la création du FooTableModel dans le widget. (Et laisser le widget gérer le FooTableModel directement?)
Des suggestions, ou des préférences?
Ma conjecture est d'aller avec * pour le moment.
Merci pour la suggestion. :) Mon modèle MVC n'est pas un QObject, donc je vais faire le nettoyage dans son destructeur. Mon modèle MVC gère les données pour l'ensemble du widget, où FooTableModel est utilisé pour un QTableView dessiné sur le widget. Je vais probablement m'en tenir à cela pour le moment. "Si vous utilisez Qt, le FooTableModel sera le modèle". Voulez-vous dire que je devrais utiliser un modèle Qt comme modèle pour l'ensemble du widget? (Au lieu de lancer le mien) Je ne suis pas sûr de savoir comment je ferais cela. Je lie habituellement un modèle Qt avec sa vue associée. –
Désolé pour le grand retard. Oui idéalement, vous utiliseriez une classe QAbstractItemModel comme modèle pour l'ensemble du widget. Si tout votre modèle enregistre une référence à un QAbstractItemModel et à quelques autres propriétés, vous pouvez faire en sorte que la classe hérite de ce type de modèle et stocker les propriétés. Cela permettrait plus d'options dans le cadre Model/View. –