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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
#include "page_visualisation1.h"
#include <QString.h>
#include <QColor>
page_visualisation1::page_visualisation1(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//initialise l'ensemble des variables
cpt=0;
min=0;
x.clear();
y.clear();
}
page_visualisation1::~page_visualisation1()
{
}
void page_visualisation1::acquisition_data()
{
//remplis les vecteurs data x et y avant de les afficher
for(int i=0;i<taille_data;i++)
{
cpt++;
x.append((cpt*time)/(1000*taille_data));
y.append(((cpt*time)/(500*taille_data)));
}
//prend en compte data et les attaches à la courbe
courbe->setData(x.data(),y.data(),y.size());
}
void page_visualisation1::dessiner()
{
//appel acquisition data afin d'initialiser les deux tableaux
acquisition_data();
//regarde si grapique arrive à la limite de l'axe x
if (cpt<=clean)
myPlot->replot(); //Si oui : rafraichie la courbe
else //Si non :
{
myPlot->clear(); //efface courbe
clean=clean+(taille_data*pas_scale*(1000/(time))); //calcul la nouvelle limite sur l'axe x
min=max; //nouveau minimum sur l'echelle x
max=max+pas_scale; //nouveau maximum sur l'echelle y
x.clear();
y.clear();
creer_courbe();
myPlot->replot();
}
}
void page_visualisation1::base_temps()
{
//Appel la fonction dessiner afin de rafraichir le graphique tous les interval définit par time
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()),this, SLOT(dessiner()));
timer->start(time);
}
void page_visualisation1::changer_echelle_temps()
{
Echelle_de_temps1 appel;
appel.Change_echelle();
close();
}
void page_visualisation1::creer_courbe()
{
//Créé la courbe
courbe = new QwtPlotCurve("Courbe : 1");
courbe->attach(myPlot);
//courbe rouge
courbe->setPen(QPen(Qt::red));
//style de la courbe : marches
courbe->setStyle(QwtPlotCurve::Steps);
//définit l'axe x de l'echelle
myPlot->setAxisScale(QwtPlot::xBottom,min,max);
}
void page_visualisation1::creer_menu()
{
//création du menu
// Création du menuBar
menubar = new QMenuBar(this);
// Création d'un menu déroulant "Fichier"
menuFichier = new QMenu( " Fichier " );
// et ajout du menu fichier à la barre de menu principale
menubar->addMenu(menuFichier);
// Maintenant, on ajoute nos items
// Ajout d'un nouvel item "Changer" que l'on connecte à la fonction changer()
menuFichier->addAction( " Nouvelle echelle de temps ",this, SLOT(changer_echelle_temps()));
// Ajout d'un séparateur
menuFichier->addSeparator();
// Ajout d'un item "Quitter" que l'on connecte au slot "close" de la mainWindows
menuFichier->addAction( "Fermer l'application",this,SLOT(close()) );
//menubar->setStyle(SP_MessageBoxQuestion);
// Puis on affecte cette barre de menu à la fenêtre principale
layout->setMenuBar(menubar);
}
void page_visualisation1::creation_page(int echelle)
{
pas_scale=echelle;
max = pas_scale;
clean=((taille_data*pas_scale*1000)/(time));
//met un titre sur la page et créé une surface ou tracée la courbe
QString titre("Variable X");
myPlot = new QwtPlot(titre);
//créé un layout et intègre les éléments
layout = new QHBoxLayout(this);
layout->addWidget(myPlot);
creer_menu();
creer_courbe();
myPlot->setMargin(3);
QString titre_axe_x("Temps en seconde");
myPlot->setAxisTitle(2,titre_axe_x);
QString titre_axe_y("Valeur du modèle");
myPlot->setAxisTitle(0,titre_axe_y);
QColor couleur1 = QColor(190,240,240,50);
myPlot->setCanvasBackground(couleur1);
//dimmenssionne et affiche la page
resize(600,300);
show();
base_temps();
} |
Partager