Bonjour,
Je suis entrain de réaliser une application chargée de récuperer un des données dans un ou plusieurs fichiers XML, permet de mapper ces noms à des noms plus conformes, afin que ceux ci génère un script sql pour alimenter les tables d'une base de données.
Pour le moment j'arrive à parser mes fichierx XML.
J'aimerai à présent pouvoir remplir un modele pour pouvoir ensuite le lier à une vue QListView.
Voici l'architechture de mon application:
obets metier:
Machine, Application
Modeles:
MachineModel, ApplicationModel
Code de ApplicationModel.h:
Code de ApplicationModel.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class ApplicationModel : public QAbstractItemModel { Q_OBJECT private: QList<Application> applist_; public: inline ApplicationModel() : QAbstractItemModel() {}; virtual ~ApplicationModel(); inline virtual int columnCount( const QModelIndex & parent = QModelIndex() ) const { return 3; }; virtual QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const; virtual QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const; inline virtual int rowCount( const QModelIndex & parent = QModelIndex() ) const { return applist_.size(); }; virtual QModelIndex parent(const QModelIndex &child) const; void append(Application application); bool contains(Application application); };
Je n'ai pas encore implémenté toutes les fonctions de QAbstraceModelView.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include "ApplicationModel.h" QVariant ApplicationModel::data( const QModelIndex & index, int role) const { switch (index.column()) { case 0: return applist_.at(index.row()).getNom() + " " + applist_.at(index.row()).getVersion(); case 1: return applist_.at(index.row()).getNom(); case 2: return applist_.at(index.row()).getVersion(); default: return QVariant(); } } QModelIndex ApplicationModel::index ( int row, int column, const QModelIndex & parent) const { return createIndex(row, column); } QModelIndex ApplicationModel::parent(const QModelIndex &child) const { return createIndex(0, 0); } ApplicationModel::~ApplicationModel() {} void ApplicationModel::append(Application application) { int row = rowCount(); beginInsertRows(QModelIndex(), row, row); applist_.append(application); endInsertRows(); } bool ApplicationModel::contains(Application application) { return applist_.contains(application); }
Lorsque je lie ce ApplicationModel à la QListView, celle-ci ne se remplir pas, et j'avoue ne pas saisir pourquoi, malgrès mes lectures et relectures de la documentation de Qt, est-ce que qu'elqu'un peut m'aider? je me sens un peu perdu.
En suite j'aurai une question en ce qui concerne les QVariant que retourne la methode data(): Est-ce que un QVariant peut contenir mes objets Metier (cela me simplifierait grandement la tâche)?
Enfin, Ai-je bien fait d'architechturer mon application de cette manière y'a-t'il un meilleur moyen que de définir des objets metier?
Partager