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 :

Tracer une courbe a partir de spinbox


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut Tracer une courbe a partir de spinbox
    Bonjour,

    Voila je debute avec QT designer 3 ( sous mandriva 2007), et j'aimerai dévelloper un programme qui a partir de valeur de spinbox me trace une courbe !

    Pour le moment j'ai fait cela :
    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
    43
    44
    45
    46
    47
    48
    49
     
    /****************************************************************************
    clic droit project settings, onglet C++  dans le champ libs écrire : -lqwt et includepath : /usr/lib/qt3/include/qwt
    *****************************************************************************/
    #define MAX 360
    #define pi 3.14159265
     
    #include<qwt_plot.h>
    #include <qwt_plot_curve.h>
    #include <qwt_spline.h>
    #include <qlayout.h>
    #include <qmenubar.h>
    #include <qtimer.h>
    #include <qvector.h>
     
     
    void Form1::init()
    {
       qwtPlot1->setTitle("Mon premier graph");
        //qwtPlot1->setAxisMaxMinor(1,0);
        //qwtPlot1->setAxisMaxMajor(1,50);
        //curve1->setData(&x, &y1, 100);
        // qwtPlot1->setCurveStyle(cRight, QwtCurve::Sticks);
          // qwtPlot1->setCurvePen(cRight, QPen(Qt::red));
    }
     
    void Form1::destroy() {};
     
    void Form1::TracerCourbe()
    {
    	QwtPlot *qwtPlot1 = new QwtPlot;
    	QwtPlotCurve *curve1 = new QwtPlotCurve;
    	long a, b;
        	double x[MAX], y[MAX], t;
     
        	a=spinBox1->value();
        	b=spinBox2->value();
     
        	for( int i=0;i<MAX;i++)
        	{
    		t= i*pi/180;
    		x[i] = sin(t) *a;
    		y[i] = cos(t) *b;
     
    	curve1->setData(&x[i], &y[i], 100);	
    	curve1->attach(qwtPlot1);
    	qwtPlot1->replot();
        }
    }
    Ce code est situer dans le form1.ui.h ! Je n'ai fai aucune classe ! J'ai mis en dur ce bout de code !

    Le probleme c'est que lorsque j'appuie sur le bouton lier a la fonction tracer courbes rien ne se passe ! Meme pas le moindre petit point !

    Si quelqu'un pouvait m'aider se serait sympa !

    Cordialement,

  2. #2
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    Pour situer d'où vient le problème, est-ce que la fonction TracerCourbe() est bien appelée lorsque tu cliques sur le bouton censé l'appeler? Si l'exécution ne rentre pas dans la fonction, il y a un problème de connexion entre le bouton et la fonction et un message d'erreur devrait s'afficher dans la console. Sinon ça vient du code de la fonction.
    S'il s'agit d'un problème de connexion, essaie de voir avec le message d'erreur ou postes le ici.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut ,

    Nan c'est bon la conenction est bien faite entre le bouton et la fonction ! Je crain que ce soit une erreur de code dans la focntion car vu que c'est ma premiere courbe j'ai du zapper quelque etapes !

  4. #4
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    Puisque ça vient de la fonction, je dirais que d'après le code il me semble y avoir quelques trucs étranges.
    J'ai jamais utilisé qwt, mais je trouve étrange d'attacher la courbe au plot et de faire replot dans la boucle for qui ajoute les points de la courbe. A mon avis ça va plutôt en dehors de cette boucle.
    Ensuite je dirais que la raison pour laquelle rien ne s'affiche c'est que le QwtPlot et QwtPlotCurve n'interagissent pas avec le formulaire, ils sont créés et utilisés mais ils ne parlent jamais avec le formulaire. Il doit je pense y avoir dans qwt une classe ou quelque chose pour intégrer les plots avec un formulaires.

    Edit:
    En fait, QwtPlot dérive de QFrame, donc c'est un widget. Pour que ça trace la courbe dans le formulaire, il faut y ajouter ce widget et te servir de clui là pour les courbes. Je sais pas si ça se fait facilement avec le designer ? Je ne sais qu'il y a un menu pour les custom widgets mais je ne m'en suis jamais vraiment servi.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Okay merci kinji1 je vai essayer de voir sa !

  6. #6
    Invité
    Invité(e)
    Par défaut
    C'est bon j'ai trouver la solution en faite il fallait creer un objet qui pointe vers la un QwtPlot ( qui est un classe deja toute faite presente dans un des .h)

    Voici la solutions
    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
    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
    136
    137
    138
    /****************************************************************************
     
    *****************************************************************************/
    #define MAX 360
    #define pi 3.14159265
     
    #include<qwt_plot.h>
    #include<qwt_legend.h>
    #include<qwt_painter.h>
    #include <qwt_plot_curve.h>
    #include <qwt_spline.h>
    #include <qlayout.h>
    #include <qmenubar.h>
    #include <qtimer.h>
    #include <qvector.h>
     
    int offset=1;
    char *couleur;  
     
    void Form1::init()
    {
       qwtPlot1->setTitle("Mon premier graphique");
       spinBox1->setFocus();
    }
     
    void Form1::effacer()
    {
        qwtPlot1->clear();
        qwtPlot1->replot();
    }
     
    void Form1::rouge()     
    {     
        checkBox4->setChecked(false);
        checkBox5->setChecked(false);
    }
    void Form1::bleu()     
    { 
        checkBox3->setChecked(false);
        checkBox5->setChecked(false);    
    }
    void Form1::vert()     
    { 
        checkBox3->setChecked(false);
        checkBox4->setChecked(false);    
    }
     
    void Form1::cercle()     
    { 
        checkBox6->setChecked(false);
        checkBox8->setChecked(false);
        pushButton1->setEnabled(true);  
    }
     
    void Form1::lissajout()     
    { 
        checkBox7->setChecked(false);
        checkBox8->setChecked(false);
        pushButton1->setEnabled(true);
    }
     
    void Form1::epysoide()     
    { 
        checkBox6->setChecked(false);
        checkBox7->setChecked(false);
        pushButton1->setEnabled(true);
    }
     
    void Form1::Tracer()
    {
        pushButton3->setEnabled(true);
        int i;
        double a=1, b=1,c=1,d=1; 
        double x[MAX], y[MAX],t;
     
        QwtPlotCurve *curve1 = new QwtPlotCurve("Curve 1");    
     
        if (checkBox3->isChecked()) 
        {
    	curve1->setPen(QPen(red) );
    	checkBox4->setChecked(false);
    	checkBox5->setChecked(false);
        }
     
        else if (checkBox4->isChecked())
        {
    	curve1->setPen(QPen(blue) );
    	checkBox3->setChecked(false);
    	checkBox5->setChecked(false);
        }
     
        else if (checkBox5->isChecked()) 
        {
    	curve1->setPen(QPen(green) );
    	checkBox3->setChecked(false);
    	checkBox4->setChecked(false);
        }
     
        else curve1->setPen(QPen(black) );
     
        a = (spinBox1->value())+offset;
        b = (spinBox2->value())+offset;
        c = (spinBox3->value())+offset;
        d = (spinBox4->value())+offset;
        offset++;
        // add curves
     
        for( i=0 ; i<MAX ; i++ )
        {
    	t= i*pi/180;
    	if (checkBox7->isChecked() )
    	{
    	    x[i] = sin(t) *a;
    	    y[i] = cos(t) *b;
    	}
     
    	else if (checkBox6->isChecked() )
    	{
    	    x[i] =(a+b)*cos(t) -b*cos( (a/b+1.0)*t);
    	    y[i] =(a+b)*sin(t) -b*sin( (a/b+1.0)*t);
    	}
     
    	else if (checkBox8->isChecked() )
    	{
    	    x[i] = a*sin( t+c);  // Courbe de lisseajout
    	    y[i] =  (b)*sin(t) ;
    	}
     
        }
     
        // copy the data into the curves
        curve1->setData(x, y, MAX);
        curve1->attach(qwtPlot1);
     
        // finally, refresh the plot
        qwtPlot1->replot();
     
    }
    Dsl il n'y a pas de commentaire
    SI quelqu'un a besoin que je lui en dise plus sur ce code source qu'il n'hesite pas !

    Au passage Merci Kinji de m'avoir répondu

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  2. Tracer une courbe à partir d'un fichier .csv
    Par dzonaser dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/10/2008, 14h48
  3. tracer une courbe à partir d'un fichier txt
    Par defcom60 dans le forum Calcul scientifique
    Réponses: 54
    Dernier message: 18/07/2008, 10h16
  4. Tracer une courbe à partir d'un bloc note
    Par autoin dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/05/2008, 19h25
  5. tracer une courbe à partir d'un fichier texte
    Par Kemanke dans le forum MFC
    Réponses: 12
    Dernier message: 18/07/2007, 10h51

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