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.