Déplacement d'un rectangle en 2D
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:
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:
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.