gapMea  1.0-rc1-1.5.3.2
GapMea est un outil visuel écrit en c++ à l'aide de la bibliothèque QT qui sert de base entre autre à l'environnement graphique de KDE.Il permet de dessiner des schémas recueillant et structurant les informations nécessaires à un domaine de gestion. Le schéma obtenu est enregistré dans un fichier texte au format xml.
 All Classes Functions Variables
qselector.cpp
1 #include "qselector.h"
2 #include <QDebug>
3 #include <QCheckBox>
4 #include <QComboBox>
5 #include <QModelIndexList>
6 
7 
8 QSelector::QSelector(QWidget* parent): QTableWidget(parent)
9 {
10 
11 }
12 void QSelector::dragEnterEvent(QDragEnterEvent *event)
13  {
14  qDebug("void QSelector::dragEnterEvent(QDragEnterEvent *event)");
15  qDebug()<<event->mimeData()->text();
16  if (event->mimeData()->hasFormat("text/plain"))
17  event->accept();
18  else
19  event->ignore();
20  }
21 
22  void QSelector::dragMoveEvent(QDragMoveEvent *event)
23  {
24  if (event->mimeData()->hasFormat("text/plain")) {
25  event->setDropAction(Qt::MoveAction);
26  event->accept();
27  } else
28  event->ignore();
29  }
30 
31  void QSelector::dropEvent(QDropEvent *event)
32  {
33  if (event->mimeData()->hasFormat("text/plain")) {
34  QString data=event->mimeData()->text();
35  QStringList typeEtNom=data.split(';');
36  //si une colonne est sélectionnée remplacement sinon ajout
37  int noColonne;
38  if(!this->selectedItems().empty())
39  {
40  noColonne=this->column(this->selectedItems()[0])+1;
41  }
42  else
43  {
44  //ajout de la colonne
45  this->setColumnCount(this->columnCount()+1);
46  noColonne=this->columnCount();
47 
48  }
49  QString intitule=typeEtNom[1];
50  if(typeEtNom[0]=="Table")
51  {
52  //affichage du nom de la table
53  this->setItem(1,noColonne-1,new QTableWidgetItem(intitule));
54  intitule="*";
55  }
56  else
57  {
58  if(!(intitule==""))
59  {
60  //table et nom de champ sont séparés par un .
61  QStringList qsl=intitule.split('.');
62  this->setItem(1,noColonne-1,new QTableWidgetItem(qsl[0]));
63  intitule=qsl[1];
64  }
65  else
66  {
67  //ajout d'un champ hors table
68  }
69  }
70  QTableWidgetItem *newItem = new QTableWidgetItem(intitule);
71  //fieldname
72  setItem( 0,noColonne-1, newItem);
73  //affiché ou non
74  setCellWidget(2,noColonne-1,new QCheckBox("display",this));
75  //tri
76  QComboBox* comboSort=new QComboBox(this);
77  comboSort->addItem("");
78  comboSort->addItem("asc");
79  comboSort->addItem("desc");
80  setCellWidget(4,noColonne-1,comboSort);
81  //fonctions de groupe
82  QComboBox* comboCalc=new QComboBox(this);
83  comboCalc->addItem("");
84  comboCalc->addItem("SUM");
85  comboCalc->addItem("MIN");
86  comboCalc->addItem("MAX");
87  comboCalc->addItem("AVG");
88  setCellWidget(6,noColonne-1,comboCalc);
89  event->setDropAction(Qt::MoveAction);
90  event->accept();
91  } else
92  event->ignore();
93  }