
| | auteur : Benjamin Poulain |
Model View est l'infrastructure de Qt qui permet de gérer les vues arborescentes, les listes et les tables.
Il se base sur un pattern Modèle-View-Delegate.
Le modèle est une interface vers les données, ce qui permet d'abstraire la façon dont celle-ci
sont représentées (mémoire, base de données, système de fichier, etc).
La vue est la représentation visuelles des données sur l'écran.
Qt fourni trois types de représentations: liste ( QListView), arbre ( QTreeView) et tableaux ( QTableView).
Le délégué permet de faire le lien entre la vue et le modèle.
Le délégué se charge de dessiner les éléments du modèle dans la vue, et de gérer l'édition de ces éléments.
Par rapport à Modèle-Vue-Controleur, le délégué est une sorte de super contrôleur. Il
génère un éditeur à la demande de la vue, et se charge de faire parvenir les informations au modèle,
c'est son rôle de contrôleur. En plus de cela, le délégué se charge de dessiner les éléments du modèle,
ce qui permet de pouvoir complètement personnaliser la vue.
| Voici un exemple d'utilisation de Model View en utilisant le système de fichier comme modèle |
#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
#include <QListView>
#include <QTableView>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QFileSystemModel model;
model.setRootPath(QDir::rootPath());
QTreeView treeView;
treeView.setModel(&model);
QListView listView;
listView.setModel(&model);
QTableView tableView;
tableView.setModel(&model);
QItemSelectionModel *selection = treeView.selectionModel();
listView.setSelectionModel(selection);
tableView.setSelectionModel(selection);
QObject::connect(selection, SIGNAL(currentChanged(const QModelIndex, const QModelIndex)), &listView, SLOT(setRootIndex(const QModelIndex)));
QObject::connect(selection, SIGNAL(currentChanged(const QModelIndex, const QModelIndex)), &tableView, SLOT(setRootIndex(const QModelIndex)));
treeView.show();
listView.show();
tableView.show();
return app.exec();
}
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2006
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|