Bonjour,

Voici ma nouvelle contribution ,comme écrit dans le titre, déplacement d' un rectangle à l'aide d'un
objet déclaré en QPushButton, dans une fenêtre de dimension 400 x 200 pixels .
Ce programme n'est pas écrit avec les class QGraphicScene et QGraphicItem .

Nom du fichier : objetmouv.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
#include "objetmouv.h"
#include <QApplication>
int main(int argc,char ** argv)
{	QApplication app(argc,argv) ;
	QPushButton * btndroite = new QPushButton("Avance") ;
		btndroite->setAutoRepeat(true) ;
		btndroite->setAutoRepeatInterval(33) ;
	QPushButton * btnrz = new QPushButton("Debut") ;
	QGridLayout * tablo = new QGridLayout ;
	Elements obj1 ;
		obj1.init() ;
	QLabel * mlabel = new QLabel ;
		mlabel->setPixmap(obj1.imagepix()) ;
		tablo->addWidget(mlabel,0,0,1,2) ;
		tablo->addWidget(btnrz,1,1) ;
		tablo->addWidget(btndroite,1,0) ;	
	QWidget * mwidget = new QWidget ;
		mwidget->setLayout(tablo) ;
	QObject::connect(btndroite,SIGNAL(clicked()),&obj1,SLOT(avancedrt()) ) ;
	QObject::connect(btnrz,SIGNAL(clicked()),&obj1,SLOT(reviendebu()) ) ;
	QObject::connect(&obj1,SIGNAL(refresh()),&obj1,SLOT(fenetre()) ) ;
		mwidget->show() ;
		obj1.config(mwidget,mlabel) ;	
return app.exec() ;	
}
Nom du fichier : objetmouv.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
#ifndef _OBJETMOUV_H_
#define _OBJETMOUV_H_
 
#include <QPainter>
#include <QLabel>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QObject>
 
class Elements : public QObject
{	Q_OBJECT
 
	public :
	void init()
	{ c_itr1 = 0 ;
	  QPixmap dimensio(400,200) ; dimensio.fill() ;
	  c_image = dimensio ; 
	  c_widget = new QWidget ; c_label = new QLabel ;
	//  c_layout = new QGridLayout ;	
	}
 
	QPixmap imagepix()
	{ return c_image ; }
 
	void config(QWidget * mwidget,QLabel * mlabel)
	{	c_widget = mwidget ; c_label = mlabel ; }	
 
	public slots :
	void avancedrt()	
	{ c_itr1+= 4 ;
		if (c_itr1 >= 390)
		{c_itr1 = 389 ; }	
		emit refresh() ;
	}
 
	void reviendebu()
	{ c_itr1 = 0 ;
		emit refresh() ;
	}
 
	void fenetre()
	{ c_image.fill() ;
	  c_label->clear() ;		
	  QPainter stylet(&c_image) ;	
		stylet.drawRect((c_itr1 + 10),50,50,100) ;
	  stylet.end() ;
	  c_label->setPixmap(c_image) ;
	  c_label->update() ;
	//  c_layout->addWidget(c_label,0,0,1,2) ;
	//  c_widget->setLayout(c_layout) ;
	  c_widget->update() ;
	}
 
	signals :
	void refresh() ;	
 
	private :
//	QGridLayout * c_layout ;	
	QWidget * c_widget ;
	QLabel * c_label ;
	QPixmap c_image ;
	int c_itr1 ;
};
 
#endif
Au revoir.