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 :

Mise à jour d'une QLineEdit


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Mise à jour d'une QLineEdit
    Bonjour,

    J'ai un petit problème dans mon application Qt qui je pense est très simple à résoudre.

    Mon problème : Je crée une QLineEdit (ReadOnly) dans ma fonction principale et je souhaite la modifier ça valeur dans une autre fonction appelée par un bouton. J'utilise la méthode setText(), au lancement de l'application la valeur s'affiche correctement mais lorsque je lance la fonction qui est censée la modification la valeur reste la même.

    Voici Mon code :
    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
     
    #ifndef HEADER_FENPROJET
    #define HEADER_FENPROJET
     
    #include <QtWidgets>
    #include <QObject>
    #include <QMainWindow>
     
    class FenProjet : public QMainWindow
    {
        Q_OBJECT
     
        public:
        FenProjet();
     
        public slots:
        void new_vitesse();
     
        private:
        QString vitesseDeplacement = "10";
        QLineEdit *vitesseI;
     
    };
     
    #endif
    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
     
    FenProjet::FenProjet()
    {
     
        vitesseI = new QLineEdit;
        vitesseI->setText(vitesseDeplacement);
        vitesseI->setReadOnly(1);
    }
     
    void FenProjet::new_vitesse()
    {
    qDebug() << "Fonction new vitesse";
    QString chaineCaracVitesse = valeur_vitesseA->text();
     
       vitesseDeplacement = chaineCaracVitesse;
       vitesseI->setText(vitesseDeplacement);
    }
    Auriez vous une idée pour résoudre mon problème ? J'attends vos retour avec impatience

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je ne pense pas que ce soit utile d'avoir un QString pour sauvegarder la vitesse, alors qu'elle est indiquée dans le QLineEdit.
    La fonction new_vitesse es t-elle bien appelée ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Oui ma fonction est bien appelée, la ligne "Fonction new vitesse" du qDebug s'affiche en sortie de l'application.
    Ce qui est étrange c'est que ma QLineEdit ne se mette pas jours..

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Peut être car vous remplacez par le même texte qui était avant ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Dans ma fonction new_vitesse, je fais afficher la valeur de ma variable vitesseDeplacement avant de l'injecter dans ma QLineEdit et elle est bien modifiée...
    Le problème ne peut pas venir du fait que ma QLineEdit est crée dans une autre fonction ? Ou alors que la déclaration en tant que private bloque la mise à jour dans une autre fonction ?
    C'est ma première application Qt du coup je ne voie vraiment pas d'où peut venir ce problème.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Le problème ne peut pas venir du fait que ma QLineEdit est crée dans une autre fonction ?
    Non
    Ou alors que la déclaration en tant que private bloque la mise à jour dans une autre fonction ?
    Ca ne compilerai pas. Donc ça ne peut pas être ça.

    Je vous conseille de déboguer. Ou alors d'envoyer le projet complet (si petit), que l'on puisse tester et surtout de voir toutes les sources.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Voici mon code :

    Header :

    fenprojet.h :
    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
    #ifndef HEADER_FENPROJET
    #define HEADER_FENPROJET
     
    #include <QMenu>
    #include <QMenuBar>
    #include <QToolBar>
    #include <QAction>
    #include <QMessageBox>
    #include <QtWidgets>
    #include <QObject>
    #include <QMainWindow>
    #include <QSerialPort>
    #include <QSerialPortInfo>
    #include <QDebug>
    #include <QtMath>
    #include "voie1.h"
    #include "voie2.h"
    #include "voie3.h"
     
     
    class QAction;
     
    class FenProjet : public QMainWindow
    {
        Q_OBJECT
     
        public:
        FenProjet();
     
        public slots:
        void injecter();
        void aspirer();
        void new_vitesse();
        void new_temperature();
        void generationTrame();
        void envoie(QString trame);
        void selectionSeringue();
     
        private slots:
        void connexion();
     
        private:
        void createAction();
        void createTool();
     
        QString mouvementSeringue;
        QString vitesseDeplacement = "10";
        float volumeMax = 1;
     
        //Variable layout
        QHBoxLayout *seringueLayout1;
        QHBoxLayout *layoutTrois_voies;
        QVBoxLayout *layoutGauche1;
        QVBoxLayout *layoutDroite1;
        QGroupBox *layoutInformation;
        QGroupBox *layoutAction;
     
        QComboBox *typeSeringue;
        int volumeS1;
        int volumeS3;
        int volumeS5;
        int volumeS10;
        int volumeS20;
        int volumeS30;
        int volumeS50;
        QString contenantTypeSeringue;
     
        // Initialisation widget
        QToolBar *toolBarFichier;
        QAction *actionConnexion;
        QAction *actionMode_Prog;
        QLineEdit *volume;
        QLineEdit *vitesseI;
        QLineEdit *temperatureI;
        QLineEdit *valeur_injecter;
        QPushButton *bouton51;
        QLineEdit *valeur_aspirer = new QLineEdit;    
        QPushButton *bouton52;
        QLineEdit *valeur_vitesseA;
        QPushButton *bouton53;
        QLineEdit *valeur_temperatureA;
        QPushButton *bouton54;
     
        QValidator *validator = new QIntValidator(0, 1000, this);
     
        Voie1 *voie1;
        Voie2 *voie2;
        Voie3 *voie3;
     
     
        //Variable Port Serie
        QSerialPort *arduino;
        static const quint16 arduino_uno_vendor_id = 9025;
        static const quint16 arduino_uno_product_id = 67;
        QString arduino_port_name;
        bool arduino_is_available;
     
    };
     
    #endif
    voie1.h :
    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
    #ifndef VOIE1_H
    #define VOIE1_H
     
    #include <QWidget>
    #include <QObject>
    #include <QGraphicsScene>
    #include <QGraphicsView>
    #include <QMouseEvent>
    #include <QDebug>
     
    class Voie1 : public QWidget
    {
        Q_OBJECT
     
    public:
        Voie1();
        QGraphicsView *vue_troisVoies;
        QGraphicsScene *scene_troisVoies;
     
     
    protected:
        void MousePressEvent(QGraphicsSceneMouseEvent *event);
     
    };
     
    #endif // VOIE1_H
    Sources :

    fenprojet.cpp :
    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    #include "fenprojet.h"
    #include "voie1.h"
    #include "voie2.h"
    #include "voie3.h"
     
    FenProjet::FenProjet()
    {
        QWidget *zoneCentrale = new QWidget;
     
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
        menuFichier->addAction("Test");
     
        QMenu *menuEdition = menuBar()->addMenu("&Edition");
        menuEdition->addAction("Test");
     
        createAction();
        createTool();
     
     //----------Création des Widgets---------------//
        typeSeringue = new QComboBox;
        typeSeringue->addItem("Seringue 1mL");
            volumeS1 = 1; // 0.93ml max avec dead space
        typeSeringue->addItem("Seringue 3mL");
            volumeS3 = 3; // 1.93 max avec dead space
        typeSeringue->addItem("Seringue 5mL");
            volumeS5 = 5; // 4.925 max avec dead space
        typeSeringue->addItem("Seringue 10mL");
            volumeS10 = 10; // 9.9 max avec dead space
        typeSeringue->addItem("Seringue 20mL");
            volumeS20 = 20; // 19.85 max avec dead space
        typeSeringue->addItem("Seringue 30mL");
            volumeS30 = 30; // 29.83 max avec dead space
        typeSeringue->addItem("Seringue 50mL");
            volumeS50 = 50; // 49.8 max avec dead space
        contenantTypeSeringue = typeSeringue->currentText();
     
        volume = new QLineEdit;
        volume->setText(QString::number(volumeMax));
        QLabel *labVolume = new QLabel(tr("Volume (mL)"));
        vitesseI = new QLineEdit;
        vitesseI->setText(vitesseDeplacement);
        QLabel *labVitesseI = new QLabel(tr("Vitesse (mm/s)"));
        temperatureI = new QLineEdit;
        QLabel *labTemperatureI = new QLabel(tr("Température (°C)"));
        valeur_injecter = new QLineEdit;
        QLabel *labInjecter = new QLabel(tr("Injecter (mL)"));
        bouton51 = new QPushButton(tr("Send"));
        valeur_aspirer = new QLineEdit;
        QLabel *labAspirer = new QLabel(tr("Aspirer (mL)"));
        bouton52 = new QPushButton(tr("Send"));
        valeur_vitesseA = new QLineEdit;
        QLabel *labVitesseA = new QLabel(tr("Vitesse (mm/s)"));
        bouton53 = new QPushButton(tr("Send"));
        valeur_temperatureA = new QLineEdit;
        QLabel *labTemperatureA = new QLabel(tr("Température (°C)"));
        bouton54 = new QPushButton(tr("Send"));
     
     
    //-----------Connexion Fonction--------------------//
     
        QObject::connect(bouton51, SIGNAL(clicked()), this, SLOT(injecter()));          // relie le clic du bouton send injecter à la fonction injecter
        QObject::connect(bouton52, SIGNAL(clicked()), this, SLOT(aspirer()));           // relie le clic du bouton send aspirer à la fonction aspirer
        QObject::connect(bouton53, SIGNAL(clicked()), this, SLOT(new_vitesse()));           // relie le clic du bouton send vitesse à la fonction new_vitesse
        QObject::connect(bouton54, SIGNAL(clicked()), this, SLOT(new_temperature()));       // relie le clic du bouton send temperature à la fonction new_temperature
        QObject::connect(typeSeringue,SIGNAL(currentTextChanged(QString)), this, SLOT(selectionSeringue())); //relie le changement de seringue à la fonction qui change le volume max
     
    //-----------Animation Seringue 1------------------//
     
        QGraphicsScene *scene_seringue = new QGraphicsScene;
        scene_seringue->setSceneRect(0,0,200,500);
        scene_seringue->setBackgroundBrush(Qt::white);
     
        scene_seringue->addRect(QRectF(98.5,18,3,33), QPen(Qt::black),QColor(242,242,242,255)); // aiguille
        scene_seringue->addRect(QRectF(85,51,30,11), QPen(Qt::black),QColor(242,242,242,255));     // rectangle en dessous de l'aiguille
        scene_seringue->addPolygon(QPolygonF(QVector<QPointF>() << QPointF(77,62) << QPointF(59,81) << QPointF(142,81) << QPointF(123,62)), QPen(Qt::black),QColor(242,242,242,255));
        scene_seringue->addPolygon(QPolygonF(QVector<QPointF>() << QPointF(83,66) << QPointF(72,78) << QPointF(108,78) << QPointF(112,66)), QPen(QColor(204,204,204,255)),QColor(204,204,204,255)); // Ombre polygone
        scene_seringue->addRect(QRectF(59,81,83,364), QPen(Qt::black)); // Rectangle sans remplissage
        QGraphicsRectItem *liquide = scene_seringue->addRect(QRectF(59,81,83,250), QPen(Qt::black),QColor(255,222,0,255)); //Liquide
        QGraphicsRectItem *ombreLiquide = scene_seringue->addRect(QRectF(72,84,36,241), QPen(QColor(208,170,2,255)),QColor(208,170,2,255)); //Ombre du Liquide
        QGraphicsRectItem *pousseLiquide = scene_seringue->addRect(QRectF(59,331,83,15), QPen(Qt::black),QColor(242,242,242,255)); // Rectangle qui pousse le liquide
        QGraphicsRectItem *tigePousseLiquide = scene_seringue->addRect(QRectF(93,346,15,99), QPen(Qt::black),QColor(242,242,242,255)); // Tige qui pousse le rectangle qui pousse le liquide
        scene_seringue->addRect(QRectF(41,445,118,10), QPen(Qt::black),QColor(242,242,242,255));     //
      //  rect1->setZValue(1);
     
        QGraphicsView *vue_seringue = new QGraphicsView(scene_seringue,this);
        vue_seringue->setFixedSize(200,510);
     
    //-----------Animation Trois Voies------------------//
     
        voie1 = new Voie1;
        voie2 = new Voie2;
        voie3 = new Voie3;
     
    //------------Restriction sur les champs de saisi------------//
        volume->setReadOnly(1);
        vitesseI->setReadOnly(1);
        temperatureI->setReadOnly(1);
     
        valeur_injecter->setValidator(validator);
        valeur_aspirer->setValidator(validator);
        valeur_vitesseA->setValidator(validator);
        valeur_temperatureA->setValidator(validator);
     
    //-----------Gestion des layouts------------------//
        QVBoxLayout *seringueLayoutV = new QVBoxLayout;     //Création Layout Parent
            QHBoxLayout *seringueLayoutH = new QHBoxLayout;     //Création Layout fille 1
                layoutDroite1 = new QVBoxLayout;        //Création Layout fille 2 droite (Info et Action)
                layoutGauche1 = new QVBoxLayout;        //Création Layout fille 2 gauche (Seringue et trois voies)
                    layoutInformation = new QGroupBox(tr("Information"));   //Création Layout fille 3 (Info)
                        QVBoxLayout *layoutVerticalInformation = new QVBoxLayout;   //Création Layout fille 4 Info (label et Line)
                        layoutVerticalInformation->addWidget(labVolume);
                        layoutVerticalInformation->addWidget(volume);
                        layoutVerticalInformation->addWidget(labVitesseI);
                        layoutVerticalInformation->addWidget(vitesseI);
                        layoutVerticalInformation->addWidget(labTemperatureI);
                        layoutVerticalInformation->addWidget(temperatureI);
                    layoutInformation->setLayout(layoutVerticalInformation);        //Insertion layout fille 4 -> fille 3 (Info)
     
                    layoutAction = new QGroupBox(tr("Action"));             //Création Layout fille 3 (Action)
                        QVBoxLayout *layoutVerticalAction = new QVBoxLayout;        //Création Layout fille 4 Action (Label et layout fille 4)
                        layoutVerticalAction->addWidget(labInjecter);
                            QHBoxLayout *layout4Horizontal1 = new QHBoxLayout;      //Création Layout fille 5-1 (line et boutton)
                            layout4Horizontal1->addWidget(valeur_injecter);
                            layout4Horizontal1->addWidget(bouton51);
                        layoutVerticalAction->addLayout(layout4Horizontal1);        //Insertion layout fille 5-1 -> fille 4
     
                        layoutVerticalAction->addWidget(labAspirer);
                            QHBoxLayout *layout4Horizontal2 = new QHBoxLayout;      //Création Layout fille 5-2 (line et boutton)
                            layout4Horizontal2->addWidget(valeur_aspirer);
                            layout4Horizontal2->addWidget(bouton52);
                        layoutVerticalAction->addLayout(layout4Horizontal2);        //Insertion layout fille 5-2 -> fille 4
     
                        layoutVerticalAction->addWidget(labVitesseA);
                            QHBoxLayout *layout4Horizontal3 = new QHBoxLayout;      //Création Layout fille 5-3 (line et boutton)
                            layout4Horizontal3->addWidget(valeur_vitesseA);
                            layout4Horizontal3->addWidget(bouton53);
                        layoutVerticalAction->addLayout(layout4Horizontal3);        //Insertion layout fille 5-3 -> fille 4
     
                        layoutVerticalAction->addWidget(labTemperatureA);
                            QHBoxLayout *layout4Horizontal4 = new QHBoxLayout;      //Création Layout fille 5-4 (line et boutton)
                            layout4Horizontal4->addWidget(valeur_temperatureA);
                            layout4Horizontal4->addWidget(bouton54);
                        layoutVerticalAction->addLayout(layout4Horizontal4);        //Insertion layout fille 5-4 -> fille 4
     
                    layoutAction->setLayout(layoutVerticalAction);          //Insertion layout fille 4 -> fille 3 (Action)
     
                layoutDroite1->addWidget(layoutInformation);                //Insertion layout fille 3 (Info) -> fille 2 (Droite)
                layoutDroite1->addWidget(layoutAction);                     //Insertion layout fille 3 (Action) -> fille 2 (Droite)
     
                    layoutTrois_voies = new QHBoxLayout;
                    layoutTrois_voies->addWidget(voie1->vue_troisVoies);
                    layoutTrois_voies->addWidget(voie2->vue_troisVoies);
                    layoutTrois_voies->addWidget(voie3->vue_troisVoies);
     
                layoutGauche1->addLayout(layoutTrois_voies);
                layoutGauche1->addWidget(vue_seringue);                              //Insertion layout animation seringue 1 -> fille 2 (Gauche)
     
            seringueLayoutH->addLayout(layoutGauche1);                      //Insertion layout fille 2 (Gauche) -> fille 1
            seringueLayoutH->addLayout(layoutDroite1);                      //Insertion layout fille 2 (Droite) -> fille 1
     
        seringueLayoutV->addWidget(typeSeringue);                           //Insertion widget -> Parent
        seringueLayoutV->addLayout(seringueLayoutH);                        //Insertion layout fille 1 -> Parent
     
        zoneCentrale->setLayout(seringueLayoutV);                           //Insertion layout Parent -> ZoneCentrale
        setCentralWidget(zoneCentrale);
    //--------------Fin de gestion des layouts----------------//
    }
     
    void FenProjet::injecter()
    {
    qDebug() << "Fonction injecter";
    float quantiteAInjecter = valeur_injecter->text().toFloat();
    QString chaineCaracAInjecter = valeur_injecter->text();
     
        if(quantiteAInjecter <= volumeMax && quantiteAInjecter > 0)
        {
            mouvementSeringue = chaineCaracAInjecter;
        }
     
        FenProjet::generationTrame();
     
        valeur_injecter->clear();
    }
     
    void FenProjet::aspirer()
    {
    qDebug() << "Fonction aspirer";
    float quantiteAAspirer = valeur_aspirer->text().toFloat();
    QString chaineCaracAAspirer = valeur_aspirer->text();
     
        if(quantiteAAspirer <= volumeMax && quantiteAAspirer > 0)
        {
            mouvementSeringue = '-' + chaineCaracAAspirer;
        }
     
        FenProjet::generationTrame();
     
        valeur_aspirer->clear();
     
    }
     
    void FenProjet::new_vitesse()
    {
    qDebug() << "Fonction new vitesse";
    QString chaineCaracVitesse = valeur_vitesseA->text();
     
       vitesseDeplacement = chaineCaracVitesse;
       vitesseI->setText(vitesseDeplacement);
    }
     
    void FenProjet::new_temperature()
    {
        qDebug() << "Fonction new temp";
     
        QString recupValeurNewTemperature = valeur_temperatureA->text();
     
        qDebug() << recupValeurNewTemperature;
     
     
     
        valeur_temperatureA->clear();
    }
     
    void FenProjet::connexion()
    {
        arduino_is_available = false;
        arduino_port_name = "";
        arduino = new QSerialPort;
     
        foreach(const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts())
        {
                if(serialPortInfo.hasVendorIdentifier() && serialPortInfo.hasProductIdentifier())
                {
                    if(serialPortInfo.vendorIdentifier() == arduino_uno_vendor_id)
                    {
                        if(serialPortInfo.productIdentifier() == arduino_uno_product_id)
                        {
                            arduino_port_name = serialPortInfo.portName();
                            arduino_is_available = true;
                        }
                    }
                }
            }
     
        if(arduino_is_available)
        {
               // open and configure the serialport
               arduino->setPortName(arduino_port_name);
               arduino->open(QSerialPort::ReadWrite);
               arduino->setBaudRate(QSerialPort::Baud115200);
               arduino->setDataBits(QSerialPort::Data8);
               arduino->setParity(QSerialPort::NoParity);
               arduino->setStopBits(QSerialPort::OneStop);
               arduino->setFlowControl(QSerialPort::NoFlowControl);
               QMessageBox::information(this, "Info Port", "Connection with Arduino is done");
         }
        else
        {
               // give error message if not available
               QMessageBox::warning(this, "Port error", "Couldn't find the Arduino!");
         }
    }
     
    void FenProjet::generationTrame()
    {
        QString trame = "G00 X" + mouvementSeringue + " F" + vitesseDeplacement;
        qDebug() << trame;
     
        FenProjet::envoie(trame);
    }
     
    void FenProjet::envoie(QString trame)
    {
            QByteArray byte; //byte a envoyer
            qint64 bw = 0; //bytes really writen
     
            byte.clear(); // on efface le contenu de byte
            byte.append(trame); // on ajoute "value" a byte
            byte.append("\n"); // On ajoute le retour a la lgine
     
            if(arduino != NULL && arduino->isWritable() ){ // on vérifie que le port existe toujours
                bw = arduino->write(byte); // on écrit les byte
                //(bw récupere le nombre de byte écris)
                qDebug() << bw << "byte(s) written | Value sent:" << trame ;
                arduino->flush(); // on attend la fin de la transmission
            }
     
    }
     
    void FenProjet::selectionSeringue()
    {
        if(typeSeringue->currentText() == "Seringue 1ml")
        {
            volumeMax = 1;
        }
        if(typeSeringue->currentText() == "Seringue 3ml")
        {
            volumeMax = 3;
        }
        if(typeSeringue->currentText() == "Seringue 5ml")
        {
            volumeMax = 5;
        }
        if(typeSeringue->currentText() == "Serigue 10ml")
        {
            volumeMax = 10;
        }
        if(typeSeringue->currentText() == "Seringue 20ml")
        {
            volumeMax = 20;
        }
        if(typeSeringue->currentText() == "Seringue 30ml")
        {
            volumeMax = 30;
        }
        if(typeSeringue->currentText() == "Seringue 50ml")
        {
            volumeMax = 50;
        }
    }
     
    void FenProjet::createAction()
    {
        actionConnexion = new QAction(tr("&Connexion"), this);
        connect(actionConnexion, SIGNAL(triggered()), this, SLOT(connexion()));
     
        //actionMode_Prog = new QAction(tr("&Programmation"),this);
        //connect(actionMode_Prog, SIGNAL(triggered()), this, SLOT(mode_Prog()));
    }
     
    void FenProjet::createTool()
    {
        toolBarFichier = addToolBar("Connexion");
        toolBarFichier->addAction(actionConnexion);
        toolBarFichier->addAction(actionMode_Prog); }
    main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <QApplication>
    #include <QtWidgets>
    #include "fenprojet.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        FenProjet fenetre;
        fenetre.show();
     
        return app.exec();
    }
    Voie1.cpp :
    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
    #include "voie1.h"
    #include "fenprojet.h"
     
    Voie1::Voie1()
    {
    //-----------Animation Trois Voies------------------//
        scene_troisVoies = new QGraphicsScene;
        scene_troisVoies->setSceneRect(0,0,50,50);
     
        scene_troisVoies->addLine(QLineF(5, 4, 45, 4), QPen(Qt::black)); //ligne superieur
     
        scene_troisVoies->addLine(QLineF(5, 22, 14, 22), QPen(Qt::black)); //ligne horizontal inferieur gauche
        scene_troisVoies->addLine(QLineF(14, 22, 15, 23), QPen(Qt::black)); //ligne oblique inferieur gauche
        scene_troisVoies->addLine(QLineF(15, 23, 15, 45), QPen(Qt::black)); //ligne vertical inferieur gauche
     
        scene_troisVoies->addLine(QLineF(35, 45, 35, 23), QPen(Qt::black)); //ligne horizontal inferieur droit
        scene_troisVoies->addLine(QLineF(35, 23, 36, 22), QPen(Qt::black)); //ligne oblique inferieur droit
        scene_troisVoies->addLine(QLineF(36, 22, 45, 22), QPen(Qt::black)); //ligne vertical inferieur droit
     
        scene_troisVoies->addPolygon(QPolygonF(QVector<QPointF>()<<QPointF(43,7)<<QPointF(30,7)<<QPointF(26,8)<<QPointF(22,10)<<QPointF(21,11)<<QPointF(19,14)<<QPointF(18,18)<<QPointF(18,43)<<QPointF(19,44)<<QPointF(31,44)<<QPointF(32,43)<<QPointF(32,22)<<QPointF(33,20)<<QPointF(35,19)<<QPointF(43,19)<<QPointF(44,18)<<QPointF(44,8)), QPen(Qt::black),QColor(Qt::black));
     
     
        vue_troisVoies = new QGraphicsView(scene_troisVoies,this);
        vue_troisVoies->setFixedSize(60,60);
     
    }
     
    void Voie1::MousePressEvent(QGraphicsSceneMouseEvent *event)
    {
      // if(event->button() == Qt::LeftButton)
        //{
            qDebug() << "YEs papa";
            //QGraphicsItem::mousePressEvent(event);
        //}
    }
    et le .pro :

    Code Qt-pro : 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
    QT += widgets
    QT += serialport
     
    SOURCES += \
        main.cpp \
        fenprojet.cpp \
        voie3.cpp \
        voie2.cpp \
        voie1.cpp
     
    HEADERS += \
        fenprojet.h \
        voie1.h \
        voie2.h \
        voie3.h
     
    FORMS +=


    Le code est un peu long mais vous avez, dans le post plus haut, les parties où interviennent ma QLineEdit qui ne veut pas se mettre à jours.
    Je vous remercie par avance

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous devriez donner un parent, lors de la construction de vos éléments graphiques. Notamment, le parent habituel, c'est le composant contenant le widget.
    De plus, je me suis demandé si c'est pas le "read only" qui bloque la mise à jour, mais je doute (ça me parait gros).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je ne comprends pas bien les liens de parenté lors de la création d'objet graphique, pourriez vous me donner un exemple ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je viens de me rendre compte d'une chose intéressante.
    Lorsque je lance mon programme et modifie la valeur qui s'affiche dans ma QLineEdit, rien ne ce passe comme d'habitude.
    Par contre si je clic sur la zone de ma QLineEdit elle se met à jours !
    Le problème vient donc bien du rafraîchissement de l'affichage graphique.
    J'ai cherché dans la doc mais je ne trouve pas de fonction permettant de faire ça et j'ai essayé "QCoreApplication::processEvent", rien de concluant.
    Avez vous une idée ??

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    A voir si vous n'êtes pas bloqué dans une boucle.
    Le lien avec le clic pourrait juste être une coïncidence ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  2. Mise à jour d'une bd mysql
    Par joquetino dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/01/2005, 14h05
  3. mise à jour d'une table d'interbase sous delphi
    Par kouraichi35 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2004, 13h09
  4. [FireBird 1.5]Mise à jour d'une SGBD ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 3
    Dernier message: 03/09/2004, 16h45
  5. Pb de mise à jour d'une date
    Par valerie90 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2004, 14h11

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