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

Discussion :

Redessiner avec QPainter

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Redessiner avec QPainter
    Bonjour à tous,

    Aujourd’hui j'ai besoin d'aide concernant la classe Qpainter de Qt, Je dois faire un programme qui dessine arc, cercle...

    J'ai réussi à dessiner via des événements envoyés à painter_event().

    Mais le problème est que la fonction à chaque fois, entrée dedans, supprime le contenu. Je souhaite garder les dessins crées précédemment. Mais comment faire, J'ai essayé repaint() mais je vois pas comment l'utiliser. J'ai essayé plusieurs façon sans succès.

    Puis, il a aussi save() et restore() de la classe Qpainter, Pareille, je vois pas comment les utiliser.

    Bref, comment redessiner?

    Je met le 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
    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
     
     
    void Dialog::paintEvent(QPaintEvent * event)
    {
     
    //tab blanc au depart
    QPainter painter( this);
    painter.setBrush( Qt::white );
    painter.drawRect(0, 0,697, 400);
     
     
    //attente even user
     if( m_flag_rect==true) {
     
          painter.drawRect(m_x1, m_y1,m_x2, m_y2);
          m_flag_rect =false;
     
     
      }
     
     else if ( m_flag_line==true) {
     
         painter.drawLine(m_x1, m_y1,m_x2, m_y2);
         m_flag_line = false;
     
     }
     
    }
     
     
    void Dialog::on_Valider_clicked()
    {
            update(); //atente even sur Qpainter
     
     
            QString p1_x;
            QString p1_y;
            QString p2_x;
            QString p2_y;
     
              if( ui->Rect->isChecked()==true )
              {
     
               m_flag_rect = true;
     
               }
     
              else if( ui->line->isChecked()==true )
              {
               m_flag_line = true;
     
              }
     
              p1_x=ui->lineEdit->text();
              p1_y=ui->lineEdit_2->text();
              p2_x=ui->lineEdit_3->text();
              p2_y=ui->lineEdit_4->text();
     
              //conversion str->int et envoie a event
              m_x1= p1_x.toInt();
              m_y1= p1_y.toInt();
              m_x2= p2_x.toInt();
              m_y2= p2_y.toInt();
     
    }
    Concernant le code, les variables, flag sont dans un dialog.h initialisé dans le constructeur dialog.c

    Je vous remercie, si y a des erreurs, veuillez m'en excusez.

  2. #2
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    tu peux ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDialog::paintEvent(event);
    au début de ta méthode, pour garder le comportement par défaut.

    Cordialement.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

Discussions similaires

  1. Dessiner avec QPainter
    Par devqt dans le forum Débuter
    Réponses: 10
    Dernier message: 28/02/2011, 19h27
  2. [2D/3D] Dessiner un QCursor avec QPainter
    Par kaymak dans le forum Débuter
    Réponses: 2
    Dernier message: 28/08/2010, 00h07
  3. Réponses: 2
    Dernier message: 23/05/2010, 03h30
  4. Dessiner une ligne avec QPainter
    Par mr_samurai dans le forum Qt
    Réponses: 3
    Dernier message: 20/11/2008, 13h56
  5. Réponses: 6
    Dernier message: 18/09/2008, 12h35

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