qt

download qt

of 21

description

qt creator

Transcript of qt

  • LE FRAMEWORK QTPrsentation du !amework

    Expos Ingnieurs2000 par Sbastien MOURETJanvier 2009

    Prsentation du !amework Qt 1

  • TABLE DES MATIRES

    Introduction 3

    Gnralits 4

    Qt So$ware 4

    Historique 4

    Le framework qt 6

    En quelques mots 6

    Look&Feel 7

    Architecture 9

    Mieux que C++ 10

    La gestion de la mmoire 11

    Les signaux et les slots 11

    La compilation 15

    Qt-Extended 16

    Les outils 17

    Qt Script 17

    Qt Designer 17

    Qt Linguist 17

    Qt Creator 19

    Dmonstration 20

    Scnario 20

    Bibliographie 21

    Prsentation du !amework Qt 2

  • INTRODUCTIONDans le cadre de mes tudes au sein de lcole Ingnieurs2000 dont les cours sont dispenss l'universit Marne-La-Valle, il nous est demand de choisir un sujet en Informatique et de faire une prsentation sur celui-ci. Cette prsentation est compose dun site web accompa-gne dune prsentation orale devant lensemble de la promotion.

    Jai dcid dans le cadre de cette prsentation de choisir de prsenter le framework Qt qui pour moi va permettre de remplacer terme le Java. Qt permet d'enrichir les fonctionnalits du langage de programmation C++ et permet de dvelopper des application multi-formes sur les principaux systmes dexploitation. Ce framework a atteint un niveau de maturit depuis 1994 date o il a t cr afin de fournir un ensemble de fonctionnalits et des outils facilitant grandement le dveloppement dapplications.

    Je vais au cours de cette prsentation vous prsenter rapidement lhistoire du framework et de sa socit de cration. Puis dans une seconde partie, je vais vous prsenter le framework et ses qualits par rapport au simple langage de programmation C++. Enfin je ferai un tour succinct sur les outils fournis dans le framework afin de faciliter la vie du dvelopper. Dans la dernire partie je fournirai une vido de prsentation dun mini-projet Qt afin de montrer la puissance de lIDE.

    La denire page fournit l'ensemble des sources que jai utilises pour raliser cette prsentation afin de vous permettre dapprofondir lapprentissage du framework.

    Prsentation du !amework Qt 3

  • GNRALITS

    Qt SoftwareQt Software est une socit Norvgienne anciennement connue sous les noms de Quasar Technologies et Trolltech. Elle ft cre par les Norvgien Eirik Eng et Haavard Nord en 1994.

    Depuis le 28 Janvier 2008 elle appartient la socit de fabrication de tlphones mobiles No-kia qui a investi dans Trolltech dans le but de concurrencer Android et lIphone OS dans la course des OS embarqus.

    Le nom du framework Qt provient de lachage de la lettre sous Emacs qui plaisait aux cra-teurs et de la lettre T pour X-Toolkit.

    La principale activit de la socit Trolltech est la vente et le support sur deux framework, Qt et Qt-Extended. Nous allons voir au cours de cette prsentation la dirence entre ces deux framework.

    HistoriqueLe framework Qt a vu le jour sur sa premire version stable 0.90 en 1995. Cette dernire a permis la cration des premires applications graphiques sous Windows et Linux.

    Sortie ensuite la version 1.2 qui sera la base du projet KDE dont le leader tait Matthias Et-trich. Ce dernier choisi ce framework pour ces qualits de dveloppement dapplication gra-phiques riches et sa capacit tre adapt sur les environnement Windows et Linux.

    Tout dabord, le framework Qt tait vendu sous deux types de licences distinctes, une premire licence commerciale et une deuxime Open Source. La deuxime implique que les applications dveloppes ne soient distribues que sous la mme licence. Cest dailleurs cause de cette petite subtilits que naquit le projet Gnome. La licence commercial a disparu depuis la version 4.6 de ce mme framework.

    En lan 2000 est sorti le framework Qt-Extended qui permet de dvelopper des application dans les terminaux embarqus. A lpoque le nom utilis tait Qtopia, cest en quelques sortes un systme dexploitation pour les appareils mobiles.

    En 2001 est sortie une des versions un plus complte du framework Qt la version 3, cette der-nire apporta le support de dveloppement dapplication sur le systme dexploitation la mode Mac Os. Cest ce moment que nous pouvions parler de framework graphique multipla-teforme. En eet, Qt permet le dveloppement dapplications graphiques dans un premier

    Prsentation du !amework Qt 4

  • temps. Ce nest qu partir de la version 4 qui sortie en 2005 que nous pouvons parler de fra-mework complet permettant de dvelopper des applications et des jeux sous les trois plus grands systmes dexploitation.

    La version 4 a apport un ensemble de bibliothques supportant le dveloppement dapplica-tions rseau, OpenGL, permettant ainsi le dveloppement dapplications compltes.

    La dernire version ce jour (Janvier 2009) est la 4.6, version rachete par Nokia.

    Prsentation du !amework Qt 5

  • LE FRAMEWORK QT

    En quelques motsDans cette partie nous allons explicits les dirents avantages et inconvnients du framework Qt, ces lments seront expliqus dans la suite de ce mme document.

    Tout dabord le framework Qt possde un ensemble de bibliothques permettant de dvelop-per des application qui requirent le support XML, rseau, manipulation de bases de donnes ou encore il ore la possibilits de dvelopper des jeux grce au support de lOpenGL.

    Lquipe Trolltech a mis la disposition du dvelopper un ensemble doutils facilitant le dve-loppement dapplications. Il faut savoir que comme le framework fonctionne sur les trois sys-tmes dexploitation, ces outils sont eux aussi compatibles avec lensemble des systmes. Bien entendu leur version ne sont pas aussi stables sur lune ou lautre des plate-forme.

    Le builder dinterface Qt Designer ore la possibilit de dessiner ses interfaces graphiques laide de simples glisser dplacer.

    Il possde de plus un IDE limage de ce quest Eclipse pour le langage de programmation Ja-va, le framework Qt possde Qt Creator dont le fonctionnement sera prsent dans la suite du document.

    Le framework Qt facilit l'internationalisation des applications dveloppes grce loutil Qt Linguist.

    Tout comme Java et sa JavaDoc, Trolltech met la disposition des dvelopper une documenta-tion riche et complte qui peut tre visualiser sur leur site ou bien par l'intermdiaire de loutil Qt Assistant qui permet davoir lintgralit de la documentation en local.

    De plus, Trolltech tout comme Sun fournit le code source des ses bibliothques lexception de la bibliothque XML.

    Il faut savoir que le framework Qt permet de dvelopper des applications multi-plates-formes en C++ (framework Qt) mais il existe aussi des binding permettant de dvelopper dans des lan-ges tels que Java (QtJambi), Python (PyQt) ou encore en Perl (PerlQt). Les applications dve-loppes dans ces langages pourront tre excutes sous Windows, Linux et Mac OS.

    Toutes les applications dveloppes par lintermdiaire de Qt possdent le look and feel de chaque systme dexploitation.

    Prsentation du !amework Qt 6

  • Qt est utilis par les plus grandes entreprise du monde de linformatique tels que Adobe avec Adobe Photoshop Ambum ou Google avec Google Earth mais encore KDE ou Skype ou en-core lexcellentissime VLC.

    Look&FeelPar lintermdiaire des captures suivantes nous pouvons nous rendre compte de lintgration des applications dveloppes par lintermdiaire du framework Qt.

    Application sous Windows :

    Application sous Mac OS :

    Prsentation du !amework Qt 7

  • Application sous Linux :

    Prsentation du !amework Qt 8

  • ArchitectureLe framework Qt est conu de telle sorte que les applications dveloppes soient compatibles avec les systmes dexploitations suivants Windows, Linux, Mac OS. Le Framework est bas sur la couche graphique des trois OS, win32 GDI pour Windows, X11 pour Linux ou encore Car-bon / Cocoa pour Mac OS.

    Prsentation du !amework Qt 9

  • Lutilisation des outils de dveloppement standards sont compatibles avec Qt (IDE, debug-ger), le dveloppement est transparent pour un dvelopper C++. Qt est indpendant du sys-tme et ne demande quune simple recompilation pour pouvoir tre adapt.

    LAPI Qt est la mme sur tous les systmes. Les applications sont compiles en excutables na-tifs pour le systme do le slogan Write Once, Compile Everywhere.

    Mieux que C++Qt tend les capacits importantes de C++, pour dvelopper avec Qt il faut avoir les connais-sances requises pour dvelopper en C++. Cependant, Qt apporte des amlioration au C++, dabord un systme de signaux et de slots qui limage des Listeners en Java permettent de faire communiquer des objets entre eux sans les coupls.

    La bibliothque Qt est aussi important que celle propose pour Java, par exemple il fournit le ncessaire pour manipuler de faon plus simple quen C++ les chaines de caractres avec les QString, ou encore la gestion des listes avec les QList.

    Qt amliore la gestion de la mmoire contrairement C++, il faut partir du principe que tous les objets hritent de QObject comme les objets Java hritent de Object. Nous allons voir dans la partie suivante ce quimplique cet hritage.

    Prsentation du !amework Qt 10

  • La gestion de la mmoireIl ny a pas de garbage collector en Qt contrairement Java. Il faut faire hriter tous les objets Qt de Qobject ainsi ils gardent une rfrence sur un objet pre. Ce mcanisme permet de donstruire une linked liste puisque tous les objets sont chainees entre eux ainsi ds la destruc-tion du pre tous les objets fils sont librs de la mmoire.

    Dans la captures ci-dessus, lors de la construction du fils 1 et 3 nous leur donnons un pointeur sur leur pre, alors que le fils 2 na quune rfrence sur le fils 1. Lors de la destruction du pre laide de la commande delete, le fils 1 va tre supprim ce qui va supprim le fils 2, enfin le fils 3 sera supprimer en dernier.

    Les signaux et les slotsLes signaux et les slots sont aux C++ ce que les listeners sont au Java. Ils permettent de faire communiquer les objets entre eux sans les lis ce qui permet une rutilisation du code par la suite. En eet, un objet ne connat pas quel objet lappel mais il ne connait pas non plus lobjet quil appelle.

    Un signal est une fonction mise par un objet (fonction emit), ce signal est associ une fonction dun autre objet (ou le mme) ces fonctions sont appeles des slots. Nous pouvons

    Prsentation du !amework Qt 11

  • connecter un signal un autre et cr des cascades dappels, on peut supprimer un signale (fonction disconnect). La connexion dun signal un slot se fait laide de la commande connect.

    Dans la capture suivante nous allons voir les dirents scnarios possibles.

    Lobjet 1 a connect ses signaux 1 et 2 aux slots des objets 2 et 4. Ainsi lorsque le signal 1 de lob-jet 1 sera mis, le slot 1 et 2 de lobjet 2 sera appel, ceci revient excuter les fonctions 1 et 2 de lobjet 2. Lorsque que le signal 2 de lobjet 1 sera mis le slot 1 de lobjet 4 sera appele. Enfin lorsque le signal 1 de lobjet 3 sera sera mis le slot 3 sera appel.

    Remarque : nous pouvons constat quun slot na pas besoin dtre connect un signal tout comme un signal na pas besoin dtre connect un slot pour exister.

    Prsentation du !amework Qt 12

  • Dans la capture ci-dessous nous allons voir comment connecter les slots et les signaux entre eux. Nous faisons le lien entre le listener en Java et les signaux en C++.

    En Java nous ajoutons un listener au bouton pour que ds quil met le signal cliqu la fonc-tion exit soit appele. Avec QtJambi cela revient ajouter un objet connect la liste clicked afin dappliquer la fonction quit.

    Avec Qt nous connectons le le signal clicked de lobjet bouton au slot quit de lobjet app.

    Ce mcanisme de signal comme nous pouvons le constater est trs simple et trs ecace cependant, nous navons pas vu comment passer des paramtres la fonction appele puis-quelle nen prenait pas. Naturellement nous serons tents dcrire ceci :

    Qt naccepte pas que dans un connect nous passions les arguments donc cette faon nest pas la bonne. Voici la bonne maniere de procder :

    Prsentation du !amework Qt 13

  • Il faut dans la fonction connect dclarer les prototypes des fonctions. Ici nous spcifions que la fonction agechange prend un entier comme argument. Lors de lmission de la fonction agechange nous spcifions le nombre envoyer au slot majAgePersonne.

    De plus, pour permettre lutilisation des slots et des signaux, il faut dans les fichiers den-ttes ajouter linstruction Q_OBJECT et les instructions slots et signals. Voici un exemple de dclaration :

    Prsentation du !amework Qt 14

  • La compilationLa compilation est la phase la plus importante dans un projet Qt, cest ce moment prcis que lapplication est compile pour le systme. La compilation dun projet Qt dire dun projet C++ dans le sens o elle se fait en trois tape.

    La premire tape consiste crer un fichier de projet Qt laide de la commande qmake -project. Lors de lexcution de cette commande Qt balaye de faon rcursive le dossier du projet afin de crer un fichier .pro qui sera utile pour ltape de compilation suivante.

    La deuxime tape de la compilation consiste compiler le fichier .pro cr ltape prc-dente laide de la commande qmake, cette tape va crer un Makefile traditionnel qui pour-ra tre lanc de la faon habituelle.

    La dernire tape consiste compiler le projet de faon classique (C++) laide du Makefile ob-tenu ltape prcdente. Lexcutable obtenu cette tape est excutable sur le type de sys-tme dexploitation sur lequel le projet a t compil.

    Si toute fois, lutilisateur veut utiliser le projet sur un autre systme dexploitation, il lui faudra le compiler sur le systme laide des fichiers sources du projet.

    Il est dans certains cas prfrable de renseigner le fichier .pro afin de spcifier soi-mme les fichiers inclure dans le projet. Ce fichier a la forme suivante :

    Prsentation du !amework Qt 15

  • TEMPLATE = spcifie si on souhaite compiler une appliccation (app) ou une librairie (lib)

    TRANSLATIONS: fichiers de langues

    TARGET: nom de lexcutable

    INCLUDEPATH: rpertoire des fichiers sources et des en-ttes

    SOURCES: rpertoire des fichiers sources

    HEADERS: rpertoire des en-ttes

    FORMS ou INTERFACES: fichier de linterface graphique obtenus laide du builder graphi-que Qt Designer

    Qt-ExtendedQt Extended (anciennement Qtopia) est une plate-forme libre dveloppe par Qt Software, base sur la bibliothque Qt pour les systmes embarqus quips du noyau Linux.

    Prsentation du !amework Qt 16

  • LES OUTILS

    Qt ScriptQt Scrippt est un outils fournit par le framework Qt qui donne la possibilit au dveloppeur de fournir un moteur de script dans leur application. Cette capacit permet aux administrateur systme utilisant des applications Qt dtendre les possibilits de celles-ci sans avoir recompi-ler les sources ni toucher au code source. Le langage de script est bas sur le standard EX-MAScript connu notamment pour sa syntaxe proche du Javascript.

    Dans notre application Qt on va tout dabord crer un QScriptEngine qui est le moteur per-mettant dinterprter le script. Le script entr par lutilisateur sous forme de QString va tre valu par ce moteur. Voici un exemple dutilisation :

    Qt DesignerQt Designer est un builder dinterfaces graphiques qui fournit au dveloppeur la capacit de crer ses propres interfaces laide de glisser-dplacer des composants graphiques tels que des bouton des textfiled etc.

    Ce mme logiciel va ensuite gnrer un fichier .ui bas sur la norme XML. Ce fichier est utili-s par le compilateur Qt lors de la compilation du fichier .pro. De plus, la gnration des fi-chiers sources et des fichiers den-ttes est automatise par Qt Designer laide du compilateur intgr User Interface Compiler.

    Contrairement Netbeans et sa gnration de code lors de la cration dinterfaces graphiques laide de ce dernier, la gnration du code source laide de Qt Designer est propre. Les fi-chiers sources sont rutilisables trs facilement.

    Qt Designer simplifie grandement la construction dinterfaces graphiques mme des plus com-plexes.

    Qt LinguistQt Linguist est un outils fourni avec le framework Qt qui permet de simplifier la vie des dve-lopper afin de traduire linterface de leur application. Ce logiciel va scanner les fichiers sources

    Prsentation du !amework Qt 17

  • la recherche des QString dans lequel le dvelopper mis une chane de caractres prcde de tr. Ainsi toutes les chanes de caractres trouves seront mises dans un fichiers .ts.

    Qt Linguist permet douvrir les fichiers .ts et donne la possibilit de traduire ses fichiers dans la langue de son choix. Par exemple si le dvelopper gnr un fichier mon_app_francais.ts qui contient les mots tels que bonjour, il pourra traduire ce mot en hello et gnrer le fichier mon_app_anglais.ts pour sa traduction en anglais.

    Une fois les fichier .ts crs il faut gnrer les fichiers .qm qui sont utilisable par lapplica-tion Qt afin de traduire linterface. Ces fichier s'obtiennent en convertissant les fichiers .ts laide de Qt Linguist.

    Voici un exemple dutilisation de la fonction tr :

    La chane mon texte sera suivi du commentaire commentaire qui ne sera visible qu l'intrieur de lapplication Qt Linguist afin de guider la personne en charge de la traduction du logiciel.

    Nous pouvons voir dans la seconde ligne quil est possible de mettre des donnes tels que des nombres l'intrieur des chane traduire.

    Voici les direntes tapes de la cration des fichiers de langue pour des applications Qt :

    Prsentation du !amework Qt 18

  • Qt CreatorQt Creator est un outils fourni avec le framework Qt, il est au C++ ce quEclipse est au Java. Cest un IDE complet qui permet de coder des application Qt. Il fournit tous les outils per-mettant le dveloppement ais dapplications.

    Il est disponible pour toutes les plate-formes. Il gre lautocompltion ainsi quun nombre de projet quasi illimit. Il intgre aussi un debugger qui permet de debugger son application en temps rel.

    Dans sa dernire version Qt Designer est intgr ce qui permet partir dune seule et mme application de crer des application Qt riches en fonctionnalits.

    Prsentation du !amework Qt 19

  • DMONSTRATION

    ScnarioLe but de la dmonstartion est de crer un convertisseur Qt qui converti trs simplement un chire en US Dollar vers lEuro.

    Cette petite application est compose des lments graphiques suivants :

    un SpinBox contenant la valeur convertir

    une ComboBox contenant la monnaie de dpart

    un PushBouton qui excute le calcul

    un Label indiquant le rsultat

    un Label contenant lunit darrive (Euro)

    Lors de cette dmonstration, jai utilis Qt Creator avec Qt Designer intgr.

    Prsentation du !amework Qt 20

  • BIBLIOGRAPHIE

    www.qtsoftware.com/developer

    www.developpez.com

    http://oreilly.com/catalog/9780596000646/toc.html

    http://vrlab.epfl.ch/~bhbn/qt_presentation/presentation.html

    http://www.javaworld.com/javaworld/jw-08-2007/jw-08-qtjambi.html?page=1

    http://www.digitalfanatics.org/projects/qt_tutorial/fr/chapter02.html

    https://www.ldc.usb.ve/docs/qt/examples.html

    Prsentation du !amework Qt 21