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 :
Concernant le code, les variables, flag sont dans un dialog.h initialisé dans le constructeur dialog.c
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(); }
Je vous remercie, si y a des erreurs, veuillez m'en excusez.
Partager