IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Affichage courbe dynamique


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut Affichage courbe dynamique
    Bonjour,[/INDENT]J’utilise Qt afin de développer une application. Dans celle-ci je doit faire un affichage de plusieurs courbes. J’utilise la bibliothèque Qwt (plus précisément qwtPlot et QwtplotCurve) pour afficher ma première courbe sur une nouvelle page. Maintenant je souhaite crée dynamiquement une (ou plusieurs) page identique, et tracée une courbe différente (une courbe par page crée). Sachant que toutes les courbes devront être rafraîchie régulièrement (par un timer à 200ms). [/INDENT]Je pense utilisée un conteneur, ou quelque chose de ce style mais je suis dans le flou depuis un moment, bref si quelqu’un a une idée sur la manière de procéder, je serait heureux de l’écouter.
    Merci d’avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Qu'est-ce qu'une page dans ce contexte exactement ? Il devrait suffire de retracer toutes les courbes à chaque déclenchement du timer. Quel est le problème exact ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut reformulation
    En faite-je souhaite créer autant de page contenant juste un graphique avec sa courbe à partir d’une page vide qui servirait de référence. Par la suite toutes les courbes/pages seraient rafraîchie par le timer. Mais actuellement dès que je demande la création d’une nouvelle page, il stop le rafraîchissement de la précédente et augmente la vitesse de mon timer. Voilà. Désoler si j ai du mal à être claire mais c’est vraiment flou dans a tête.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Mais qu'est-ce qu'une page ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Salut,
    Merci de m’aider mais je débute avec Qt, et désoler si des fois j’ai du mal à comprendre.
    Voila ma page est un Qwidget auquel j'ajoute un Qwtplot (avec un layout horizontal). Bref voila comment ma page est codée :
    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
    void page_visualisation1::creation_page()
    {
    	page_visualisation1Class = new page_visualisation1();	
     
    	//met un titre sur la page et créé une surface ou tracée la courbe
    	QString titre("Variable X");
    	myPlot = new QwtPlot(titre, page_visualisation1Class);
     
    	//créé un layout et intègre les éléments 
    	QHBoxLayout *layout;
    	layout = new QHBoxLayout(page_visualisation1Class);
        layout->addWidget(myPlot);
     
    	//dimmenssionne et affiche la page
    	page_visualisation1Class->resize(600,300);
    	page_visualisation1Class->show();
    Ensuite j’ai un timer qui initialise tous les intervalles « time » ma fonction dessiner :
    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
    void page_visualisation1:: dessiner()
    {
    	//Créé la courbe
    courbe1 = new QwtPlotCurve("Courbe : 1");
     
    	//appel acquisition data afin d'initialiser les deux tableaux
    acquisition_data();
     
    	//prend en compte data et les attaches à la courbe
    courbe1->setData(x,y,Size);
    courbe1->attach(myPlot);
     
    	//courbe rouge
    courbe1->setPen(QPen(Qt::red));
    	//style de la courbe : lines
    courbe1->setStyle(QwtPlotCurve::Lines);
     
    	//définit l'axe x de l'echelle
    myPlot->setAxisScale(QwtPlot::xBottom,min,max);
     
    //regarde si grapique arrive à la limite de l'axe x
    if (cpt<=clean)
    myPlot->replot();	//Si non : rafraichie la courbe
    else				//Si oui :
    {
    	myPlot->clear();	//efface courbe
    	myPlot->replot();	//dessine nouvelle courbe
    	clean=clean+(Size*pas_scale*(1000/(time)));		//calcul la nouvelle limite sur l'axe x
    	min=max;		//nouveau minimum sur l'echelle x
    	max=max+pas_scale;	//nouveeau maximum sur l'echelle y
    }
    Je m'explique le but est de pouvoir à chaque appel de la fonction creation_page, de crée une nouvelle page(chaque page avec une courbe différente). sachant que je ne sais pas à l'avance combien de courbe j'aurais à tracée.
    Le problème pour le moment est qu'il ma créé bien une nouvelle page, mais il stop le rafraîchissement de la précèdent, et augmente le rythme du timer.

    J'espères que c'est compréhensible, et de nouveau merci.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Je suis désolé, je ne comprends toujours pas très bien, mais ça peut fort bien être ma faute. Je crois que le problème ne vient pas du code qui a été déjà montré ici mais du déclenchement du timer qui appelle ce code. Mais il faudrait que je comprenne le contexte pour être sûr. Le mieux serait d'écrire un programme d'exemple minimal et compilable (30-40 lignes) qui reproduise le problème.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Bon en faite j'ai réussi à régler une partit du problème : sa venait du "this" dans le timer qui ne pointait pas au même endroit qu'un autre pointeur qui devait être identique (bref j'ai trouvé en bidouillant mais j ai pas compris pourquoi cette partit fonctionnait).Mais maintenant j'ai une autre erreur (elle m'empêche de tester ma solution -> je ne sais toujours pas si sa peut fonctionner. Celle-ci ce produit à l'exécution, lorsque que j'arrive sur *myPlot (sauf sur la ligne de déclaration et de la création avec le new). Il me met l'erreur suivante :

    Unhandled exception at 0x1005c711 in Polux_application.exe: 0xC0000005: Access violation reading location 0xcdcdcdd5.
    Elle se produit dans le fichier suivant : qatomic_windows.h
    J'aimerais des pistes quant à savoir d'où sa provient.(Le code a été modifié en partit donc si besoin je peux le remettre sur le forum, mais il y a plus de 130 lignes).
    Bon je te remercie et si tu peu pas m'aider c'est que je ne suis pas clair ne t'affole pas mais je débute avec Qt.

    A+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Bon en faite j'ai réussi à régler une partit du problème : sa venait du "this" dans le timer qui ne pointait pas au même endroit qu'un autre pointeur qui devait être identique (bref j'ai trouvé en bidouillant mais j ai pas compris pourquoi cette partit fonctionnait).Mais maintenant j'ai une autre erreur (elle m'empêche de tester ma solution -> je ne sais toujours pas si sa peut fonctionner. Celle-ci ce produit à l'exécution, lorsque que j'arrive sur *myPlot (sauf sur la ligne de déclaration et de la création avec le new). Il me met l'erreur suivante :

    Unhandled exception at 0x1005c711 in Polux_application.exe: 0xC0000005: Access violation reading location 0xcdcdcdd5.
    Elle se produit dans le fichier suivant : qatomic_windows.h
    J'aimerais des pistes quant à savoir d'où sa provient.(Le code a été modifié en partit donc si besoin je peux le remettre sur le forum, mais il y a plus de 130 lignes).
    Bon je te remercie et si tu peu pas m'aider c'est que je ne suis pas clair ne t'affole pas mais je débute avec Qt.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage statistique "dynamique"
    Par nezdeboeuf62 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/04/2007, 14h05
  2. probléme affichage images dynamiques
    Par abdelfettah2007 dans le forum Langage
    Réponses: 1
    Dernier message: 15/03/2007, 00h20
  3. [FLASH MX2004] Pb d'affichage texte dynamique
    Par mohican13 dans le forum Flash
    Réponses: 6
    Dernier message: 01/02/2005, 09h55
  4. [FLASH MX 2004] Affichage texte dynamique
    Par Sun3clipse dans le forum Flash
    Réponses: 8
    Dernier message: 25/06/2004, 16h24
  5. Affichage courbe wav
    Par FredericB dans le forum C++Builder
    Réponses: 9
    Dernier message: 25/05/2004, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo