ROV'NET  0.2
BTS SNIR LaSalle Avignon 2020
ihmgraphiques.cpp
Aller à la documentation de ce fichier.
1 
7 #include "ihmgraphiques.h"
8 
9 IHMGraphiques::IHMGraphiques(QVector<QStringList> mesures, QWidget *parent) : QWidget(parent), mesures(mesures), valeurMaxRadiation(0.0), valeurMaxTemperature(0.0), valeurMaxHumidite(0.0)
10 {
11  QVBoxLayout *layoutPrincipal = new QVBoxLayout;
12  QHBoxLayout *layoutGrapheRadiation = new QHBoxLayout;
13  QHBoxLayout *layoutGrapheHumidite = new QHBoxLayout;
14  QHBoxLayout *layoutGrapheTemperature = new QHBoxLayout;
15 
19 
20  resize(640, 480);
21  setStyleSheet("background:#202020");
22 
23  layoutPrincipal->addLayout(layoutGrapheRadiation);
24  layoutPrincipal->addLayout(layoutGrapheHumidite);
25  layoutPrincipal->addLayout(layoutGrapheTemperature);
26  layoutGrapheRadiation->addWidget(graphiqueRadiation);
27  layoutGrapheHumidite->addWidget(graphiqueHumidite);
28  layoutGrapheTemperature->addWidget(graphiqueTemperature);
29  setLayout(layoutPrincipal);
30  showMaximized();
31 }
32 
34 {
35  courbeRadiation = new QLineSeries();
36  doseLimiteRadiation = new QLineSeries();
37 
38  for(QVector<QStringList>::iterator it = mesures.begin(); it != mesures.end(); it++)
39  {
40  courbeRadiation->append(QDateTime::fromString((*it).at(0)).toMSecsSinceEpoch(), (*it).at(1).toFloat());
41  if((*it).at(1).toFloat() > valeurMaxRadiation)
42  valeurMaxRadiation = (*it).at(1).toFloat();
43  }
44 
45  doseLimiteRadiation->append(QDateTime::fromString(mesures[0].at(0)).toMSecsSinceEpoch(), 0.1);
46  doseLimiteRadiation->append(QDateTime::fromString(mesures[mesures.size() - 1].at(0)).toMSecsSinceEpoch(), 0.1);
47 
48  courbeRadiation->setName(QString::fromUtf8("<font color=\"#FFFFFF\">Radiation</font>"));
49  doseLimiteRadiation->setName(QString::fromUtf8("<font color=\"#FFFFFF\">Dose limite</font>"));
50  QPen pen;
51  pen.setColor(QColor(Qt::darkGreen));
52  pen.setWidth(2);
53  courbeRadiation->setPen(pen);
54  pen.setColor(QColor(Qt::darkRed));
55  pen.setStyle(Qt::DashLine);
56  doseLimiteRadiation->setPen(pen);
57 
58  grapheRadiation = new QChart();
59  grapheRadiation->setBackgroundVisible(false);
60  grapheRadiation->addSeries(courbeRadiation);
62  grapheRadiation->setBackgroundBrush(QColor(0xFFFFFF));
63 
64  QDateTimeAxis *axeXRadiation = new QDateTimeAxis;
65  axeXRadiation->setTickCount(10);
66  axeXRadiation->setFormat("hh:mm:ss");
67  axeXRadiation->setTitleText("Heure");
68  axeXRadiation->setLabelsColor(0xFFFFFF);
69  axeXRadiation->setTitleBrush(QColor(0xFFFFFF));
70  axeXRadiation->setMin(QDateTime::fromString(mesures[0].at(0)));
71  axeXRadiation->setMax(QDateTime::fromString(mesures[mesures.size()-1].at(0)));
72  grapheRadiation->addAxis(axeXRadiation, Qt::AlignBottom);
73  courbeRadiation->attachAxis(axeXRadiation);
74  doseLimiteRadiation->attachAxis(axeXRadiation);
75 
76  QValueAxis *axeYRadiation = new QValueAxis;
77  axeYRadiation->setRange(0, int(valeurMaxRadiation) + 0.2);
78  axeYRadiation->setLabelFormat("%.2f");
79  axeYRadiation->setTitleText(QString::fromUtf8("Radiation en µsV/h"));
80  axeYRadiation->setLabelsColor(0xFFFFFF);
81  axeYRadiation->setTitleBrush(QColor(0xFFFFFF));
82  grapheRadiation->addAxis(axeYRadiation, Qt::AlignLeft);
83 
84  doseLimiteRadiation->setPointsVisible(true);
85  doseLimiteRadiation->setPointLabelsFormat("@yPoint" ESPACE_LISIBILITE);
86  doseLimiteRadiation->setPointLabelsVisible(true);
87  doseLimiteRadiation->attachAxis(axeYRadiation);
88 
89  courbeRadiation->setPointsVisible(true);
90  courbeRadiation->setPointLabelsFormat("@yPoint" ESPACE_LISIBILITE);
91  courbeRadiation->setPointLabelsVisible(true);
92  courbeRadiation->attachAxis(axeYRadiation);
93 
94  courbeRadiation->setPointLabelsColor(0xFFFFFF);
95  doseLimiteRadiation->setPointLabelsColor(0xFFFFFF);
96 
97  graphiqueRadiation = new QChartView(grapheRadiation);
98  graphiqueRadiation->setRenderHint(QPainter::Antialiasing);
99 }
100 
102 {
103  courbeHumidite = new QLineSeries();
104 
105  for(QVector<QStringList>::iterator it = mesures.begin(); it != mesures.end(); it++)
106  {
107  courbeHumidite->append(QDateTime::fromString((*it).at(0)).toMSecsSinceEpoch(), (*it).at(3).toFloat());
108  if((*it).at(1).toFloat() > valeurMaxHumidite)
109  valeurMaxHumidite = (*it).at(3).toFloat();
110  }
111 
112  courbeHumidite->setName(QString::fromUtf8("<font color=\"#FFFFFF\">Humidité</font>"));
113  QPen pen;
114  pen.setColor(QColor(Qt::darkGreen));
115  pen.setWidth(2);
116  courbeHumidite->setPen(pen);
117 
118  grapheHumidite = new QChart();
119  grapheHumidite->setBackgroundVisible(false);
120  grapheHumidite->addSeries(courbeHumidite);
121  grapheHumidite->setBackgroundBrush(QColor(0xFFFFFF));
122 
123  QDateTimeAxis *axeXHumidite = new QDateTimeAxis;
124  axeXHumidite->setTickCount(10);
125  axeXHumidite->setFormat("hh:mm:ss");
126  axeXHumidite->setTitleText("Heure");
127  axeXHumidite->setLabelsColor(0xFFFFFF);
128  axeXHumidite->setTitleBrush(QColor(0xFFFFFF));
129  axeXHumidite->setMin(QDateTime::fromString(mesures[0].at(0)));
130  axeXHumidite->setMax(QDateTime::fromString(mesures[mesures.size()-1].at(0)));
131  grapheHumidite->addAxis(axeXHumidite, Qt::AlignBottom);
132  courbeHumidite->attachAxis(axeXHumidite);
133 
134  QValueAxis *axeYHumidite = new QValueAxis;
135  axeYHumidite->setRange(0, 100);
136  axeYHumidite->setLabelFormat("%d");
137  axeYHumidite->setTitleText(QString::fromUtf8("Humidité en %"));
138  axeYHumidite->setLabelsColor(0xFFFFFF);
139  axeYHumidite->setTitleBrush(QColor(0xFFFFFF));
140  grapheHumidite->addAxis(axeYHumidite, Qt::AlignLeft);
141  courbeHumidite->setPointsVisible(true);
142  courbeHumidite->setPointLabelsFormat("@yPoint" ESPACE_LISIBILITE);
143  courbeHumidite->setPointLabelsVisible(true);
144  courbeHumidite->attachAxis(axeYHumidite);
145 
146  courbeHumidite->setPointLabelsColor(0xFFFFFF);
147 
148  graphiqueHumidite = new QChartView(grapheHumidite);
149  graphiqueHumidite->setRenderHint(QPainter::Antialiasing);
150 }
151 
153 {
154  courbeTemperature = new QLineSeries();
155 
156  for(QVector<QStringList>::iterator it = mesures.begin(); it != mesures.end(); it++)
157  {
158  courbeTemperature->append(QDateTime::fromString((*it).at(0)).toMSecsSinceEpoch(), (*it).at(2).toFloat());
159  if((*it).at(2).toFloat() > valeurMaxTemperature)
160  valeurMaxTemperature = (*it).at(2).toFloat();
161  }
162 
163  courbeTemperature->setName(QString::fromUtf8("<font color=\"#FFFFFF\">Température</font>"));
164  QPen pen;
165  pen.setColor(QColor(Qt::darkGreen));
166  pen.setWidth(2);
167  courbeTemperature->setPen(pen);
168 
169  grapheTemperature = new QChart();
170  grapheTemperature->setBackgroundVisible(false);
172  grapheTemperature->setBackgroundBrush(QColor(0xFFFFFF));
173 
174  QDateTimeAxis *axeXTemperature = new QDateTimeAxis;
175  axeXTemperature->setTickCount(10);
176  axeXTemperature->setFormat("hh:mm:ss");
177  axeXTemperature->setTitleText("Heure");
178  axeXTemperature->setLabelsColor(0xFFFFFF);
179  axeXTemperature->setTitleBrush(QColor(0xFFFFFF));
180  axeXTemperature->setMin(QDateTime::fromString(mesures[0].at(0)));
181  axeXTemperature->setMax(QDateTime::fromString(mesures[mesures.size()-1].at(0)));
182  grapheTemperature->addAxis(axeXTemperature, Qt::AlignBottom);
183  courbeTemperature->attachAxis(axeXTemperature);
184 
185  QValueAxis *axeYTemperature = new QValueAxis;
186  axeYTemperature->setRange(0, int(valeurMaxTemperature) + 5);
187  axeYTemperature->setLabelFormat("%.1f");
188  axeYTemperature->setTitleText(QString::fromUtf8("Temperature en °C"));
189  axeYTemperature->setLabelsColor(0xFFFFFF);
190  axeYTemperature->setTitleBrush(QColor(0xFFFFFF));
191  grapheTemperature->addAxis(axeYTemperature, Qt::AlignLeft);
192  courbeTemperature->setPointsVisible(true);
193  courbeTemperature->setPointLabelsFormat("@yPoint" ESPACE_LISIBILITE);
194  courbeTemperature->setPointLabelsVisible(true);
195  courbeTemperature->attachAxis(axeYTemperature);
196 
197  courbeTemperature->setPointLabelsColor(0xFFFFFF);
198 
199  graphiqueTemperature = new QChartView(grapheTemperature);
200  graphiqueTemperature->setRenderHint(QPainter::Antialiasing);
201 }
QChartView * graphiqueRadiation
widget pour afficher le graphe radiation
Definition: ihmgraphiques.h:25
float valeurMaxRadiation
La valeur max de la radiation du graphique Radiation.
Definition: ihmgraphiques.h:38
float valeurMaxTemperature
La valeur max de la température du graphique Température.
Definition: ihmgraphiques.h:39
QChart * grapheHumidite
la représentation du graphe humidite
Definition: ihmgraphiques.h:31
void initialisationGraphiqueRadiation()
QLineSeries * courbeHumidite
Les données d&#39;humidite sous forme de courbe.
Definition: ihmgraphiques.h:32
QLineSeries * courbeTemperature
Les données de temperature sous forme de courbe.
Definition: ihmgraphiques.h:36
void initialisationGraphiqueHumidite()
Fichier qui contient la déclaration de la classe IHMGraphiques.
QChart * grapheTemperature
la représentation du graphe temperature
Definition: ihmgraphiques.h:35
float valeurMaxHumidite
La valeur max de l&#39;humidité du graphique Humidité
Definition: ihmgraphiques.h:40
QChartView * graphiqueTemperature
widget pour afficher le graphe temperature
Definition: ihmgraphiques.h:34
QChart * grapheRadiation
la représentation du graphe radiation
Definition: ihmgraphiques.h:26
IHMGraphiques(QVector< QStringList > mesures, QWidget *parent=nullptr)
Constructeur de la classe IHMGraphiques.
#define ESPACE_LISIBILITE
Definition: ihmgraphiques.h:13
void initialisationGraphiqueTemperature()
QLineSeries * doseLimiteRadiation
Le sueil de radiation acceptable.
Definition: ihmgraphiques.h:28
QLineSeries * courbeRadiation
Les données de radiation sous forme de courbe.
Definition: ihmgraphiques.h:27
QVector< QStringList > mesures
Conteneur des mesures de la base de données pour une campagne donnée.
Definition: ihmgraphiques.h:24
QChartView * graphiqueHumidite
widget pour afficher le graphe humidite
Definition: ihmgraphiques.h:30
La classe QWidget est la classe de base de tous les objets graphiques d&#39;interface utilisateur...