Vous êtes sur la page 1sur 6

Utilisation de la bibliothque Qt pour faire du graphisme en C :

Prsentation :
Qt est une bibliothque multiplateforme (compatible avec Windows, Linux, Mac OS..) utilis fondamentalement pour crer des GUI (programme utilisant des fentres). Cest aussi un framework qui met votre disposition une multitude doutils pour des programmes plus efficaces. Qt est utilis pour raliser plusieurs GUI trs connus: Adobe Photoshop Elements, de Google Earth ou encore de Skype.

Installation :
-Tlcharger Qt, version LGPL (gratuite) : http://qt-project.org/downloads. Vous devez choisir entre Qt SDK (bibliothque Qt + IDE Qt Creator) ou Qt Framework (bibliothque Qt seule). Ensuite Choisissez le fichier en fonction de votre OS.

-Lancez linstallation et suivez les diffrentes tapes. Si vous avez choisi la version Qt SDK, cochez Run Qt Creator.

Cration dun nouveau projet avec Code Blocks :


- Ouvrez Qt et crez un nouveau projet. Choisissez Qt4 Project et cliquez sur go. - Donnez un nom votre fichier puis cliquez sur suivant. - Donner le rpertoire de Qt. Cliquez sur les points de suspension, fermez la premire fentre qui souvre. Dans la deuxime, choisissez le dossier avec les chiffres (5.0.2) (sous dossier de Qt, les chiffres dpendent de la version installe.) - Code Blocks gnre un fichier de base. - Pour tester que tout fonctionne, cliquez sur Build. - Allez dans le dossier o vous avez enregistr le projet, dans le dossier bin puis dans le dossier release. - Copiez les fichiers Correction des erreurs QtCore4.dll (http://fr.topdll.com/download/qtcore4.dll), Correction des erreurs QtGui4.dll (http://fr.topdll.com/download/QtGui4.dll) et mingwm10.dll qui se trouve gnralement dans lemplacement C:\mingw\bin. - Lancez le fichier excutable (ProjetQt.exe). Si tout fonctionne, vous devriez avoir une fentre avec un bouton Quit. Il est toujours possible dutiliser la console Qt en tapant le chemin du projet, puis les fonction qmake project, qmake et make. En se plaant dans le dossier debug il est possible d ouvrir lexcutable.

Utilisation de la bibliothque Qt pour faire du graphisme en C:


1

Une application Qt est une application graphique prend pour concept de base le widget. Cest l'entit de base d'une interface graphique qui ragit aux actions d'un utilisateur : manipulation de la souris, du clavier et tout autre vnement du systme graphique. Les widgets sont de formes rectangulaires et sont organiss hirarchiquement.

Fonctions de base :
La classe QApplication :

Une application Qt est un objet de la classe QApplication. Il se charge de la gestion des vnements d'une application donne : c'est la classe centrale de Qt qui reoit de l'environnement graphique des vnements et qui les transmet un objet graphique particulier (widget). Chaque programme ne comporte qu'un objet de type QApplication et la variable globale qApplication fait rfrence cet objet (objet dfini par extern QApplication *qApplication). Le fichier qapplication.h contient les dclarations de la classe QApplication doit tre inclus dans les programmes utilisant Qt #include <qapplication.h>
La classe QPushButton

Le fichier qapplication.h ne contient pas tous ce dont une application Qt a besoin. Il est souvent ncessaire d'inclure d'autres fichiers d'interface, selon les besoins de l'application que l'on dveloppe. Par exemple, si l'on veut utiliser d'autres objets graphiques, un bouton par exemple, on devra inclure le fichier qpushbutton.h. #include <qpushbutton.h> Un bouton est un objet de la classe QPushButton et possde par dfaut un aspect prdfini. Il existe encore dautres formes de bouton.

Crer une QApplication :


Une application Qt commence toujours par la cration d'un objet de la classe QApplication de la manire QApplication nom_de_l'apli (argc, argv ); Exemple On a un objet application (nomm "a"), un widget (nomm "hello"). Le widget est affect l'application, puis l'application excute.
#include <qapplication.h> #include <qpushbutton.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton hello( "Hello "); hello.resize( 300, 30 ); //taille de la fentre a.setMainWidget( &hello ); //le dfinit comme widget principal

hello.show(); // Un widget n'est jamais visible quand on le cre. Il faut appeler QWidget::show() pour le rendre visible. return a.exec(); // le main() passe le contrle Qt et permet lexecution }

2.4Grer des vnements


Qt propose un systme d'appels entre objets original. Chaque objet Qt peut mettre des signaux, et peut tre dot de slots. Le lien entre un signal et un slot se fait l'aide de la simple instruction connect. Par exemple, l'objet standard QButton est dot d'un signal nomm clicked() qui est dclench lorsque l'utilisateur clique sur le bouton (soit l'aide de la souris, soit en le validant au clavier, peu importe). De mme, la fonction quit() de l'objet standard QApplication est en fait un slot. Il nous suffit donc d'ajouter juste avant return a.exec() la ligne de code suivante :
QObject : :connect( &hello, SIGNAL(clicked()), &a, SLOT(quit()) ) ;

Le systme de communication tabli en Qt est bas sur cette notion d'mission et rception de signaux. L'objet metteur du signal n'a pas se soucier de l'existence d'un objet susceptible de recevoir le signal mis. Ce qui permet une trs bonne encapsulation et le dveloppement totalement modulaire. Un signal peut tre connect plusieurs slots et plusieurs signaux un mme slot.

2.5Exemple comment
Prenons l'exemple d'un programme permettant de crer une fentre dans laquelle se trouve un bouton.

#include <qapplication.h> #include <qpushbutton.h> #include <qfont.h> class MyWidget : public QWidget { public: MyWidget( QWidget *parent=0, const char *name=0 ); }; MyWidget::MyWidget( QWidget *parent, const char *name ) : QWidget( parent, name ) { setMinimumSize( 200, 120 ); setMaximumSize( 200, 120 ); QPushButton *quit = new QPushButton( "Quit", this, "quit" ); quit->setGeometry( 62, 40, 75, 30 ); //Gomtrie du bouton dfinie dans la fentre suivant (x,y,w,h)

quit->setFont( QFont( "Times", 18, QFont::Bold ) ); //dfinition de la police et taille du texte connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); } //Effectue la fonction quit en cliquant sur le bouton "quit". int main( int argc, char **argv ) { QApplication a( argc, argv ); MyWidget w; w.setGeometry( 100, 100, 200, 120 ); //Gomtrie de la fentre dfinie dans l'cran suivant (x,y,w,h)

a.setMainWidget( &w ); w.show(); return a.exec(); }

Fonctions graphiques
Gnralit sur le dessin Les outils de bases pour dessiner sous Qt sont :

Le pen Le Brush

Le pen Le pen ou le stylo dfinit les contours des formes (rectangles, ellipse). On peut soit modifier sa forme soit sa couleur. Au cours d'un programme il est possible d'utiliser des stylos pralablement dclars ou en spcifier un par fonction.

Le Brush Le brush ou brosse permet de remplir une forme suivant un style ou une couleur diffrents.

Quelques fonctions graphiques de bases


1void QPainter::drawPoint ( int x, int y )

Dessine un point (x, y)

void QPainter::drawLine ( int x1, int y1, int x2, int y2 )

Dessine une ligne de (x1, y1) (x2, y2) place le pen (x2, y2)

void QPainter::drawLine ( const QPoint & p1, const QPoint & p2 )

Dessine une ligne de p1 p2.


void QPainter::lineTo ( int x, int y )

Dessine une ligne de la position initiale du pen (x, y) et (x, y) devient la nouvelle position du pen.
void QPainter::moveTo ( int x, int y )

Place le pen la position (x, y)


void QPainter::drawRect ( int x, int y, int w, int h )

Dessine un rectangle dont le coin suprieur gauche est (x,y) de largeur w et de hauteur h

Vous aimerez peut-être aussi