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 : 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);
};
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
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);
}
Je n'ai pas encore implémenté toutes les fonctions de QAbstraceModelView.

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?