Cours Qt par Thierry Vaira © v.1.00 Sommaire A Présentation de Qt 2 B Notions d
Cours Qt par Thierry Vaira © v.1.00 Sommaire A Présentation de Qt 2 B Notions de base 3 B.1 Programmation évènementielle . . . . . . . . . . . . . . . . . . . . . . . . 3 B.2 Structure générale de Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 B.2.1 La classe QObject . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 B.2.2 Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 B.2.3 La classe QApplication . . . . . . . . . . . . . . . . . . . . . . . 6 B.3 Élément graphique (widget) . . . . . . . . . . . . . . . . . . . . . . . . . 8 B.4 Mécanisme signal/slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 B.5 Projet Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 B.6 Environnement de Développement Intégré (EDI) . . . . . . . . . . . . . . 20 B.7 Positionnement (layout) . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 B.8 Transition Qt4 − →Qt5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 B.9 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 B.10 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 LT La Salle Avignon 1 / 28 © tvaira@free.fr Qt Cours BTS SN-IR A Présentation de Qt Qt est une bibliothèque logicielle orientée objet (API) développée en C++ par Qt Development Frameworks, filiale de Digia. Une API (Application Programming Interface) est une interface de programmation pour les application et donc les développeurs. C'est un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade pour accéder aux services fournis. Qt est une plateforme de développement d’interfaces graphiques GUI (Graphical User Interface) fournie à l’origine par la société norvégienne Troll Tech, rachetée par Nokia en février 2008 puis cédée intégralement en 2012 à Digia (www.qt.io). Qt fournit également un ensemble de classes décrivant des éléments non graphiques : accès aux données (fichier, base de données), connexions réseaux (socket), gestion du multitâche (thread), XML, etc. Qt permet la portabilité des applications (qui n’utilisent que ses composants) par simple recompilation du code source. Les environnements supportés sont les Unix (dont Linux), Windows et Mac OS X. De plus en plus de développeurs utilisent Qt, y compris parmi de grandes entreprises. On peut notamment citer : Google, Adobe Systems, Asus, Samsung, Philips, ou encore la NASA et bien évidemment Nokia. Qt est notamment connu pour être la bibliothèque sur laquelle repose l’environnement graphique KDE, l’un des environnements de bureau les plus utilisés dans le monde Linux. Lire aussi les licences Qt : www.qt.io/licensing/. Question 1 (1 point) Peut-on écrire en Qt une application graphique qui exploite les donnnées en provenance d’une base de données MySQL et qui exporte celles-ci au format XML ? 2 oui 2 non Question 2 (1 point) Un code source écrit en Qt pourra-t-il produire une application pour Linux et Windows ? 2 oui 2 non LT La Salle Avignon 2 / 28 © tvaira@free.fr Qt Cours BTS SN-IR B Notions de base B.1 Programmation évènementielle La programmation événementielle est une programmation basée sur les événements. Elle s'oppose à la programmation séquentielle (une suite d'instructions, d'actions, ...). Le programme sera principalement défini par ses réactions aux différents événements qui peuvent se produire, c’est-à-dire des changements d’état, par exemple l’incrémentation d’une liste, un mouvement de souris ou de clavier etc. Elle est particulièrement mise en ÷uvre dans le domaine des interfaces graphiques. La programmation événementielle est architecturée autour d’une boucle principale fournie et divisée en deux sections : la première section détecte les événements, la seconde les gère. Pour chaque évènement à gérer, il faut lui associer une action à réaliser (le code d’une fonction ou méthode) : c’est le gestionnaire d’évènement (handler). Ensuite, à chaque fois que l’évènement sera détecté par la boucle d’évènement, le gestion- naire d’évènement sera alors exécuté. La programmation évènementielle des applications Qt est basée sur un mécanisme ap- pelé signal/slot : – un signal est émis lorsqu’un événement particulier se produit. Les classes de Qt possèdent de nombreux signaux prédéfinis mais vous pouvez aussi hériter de ces classes et leur ajouter vos propres signaux. – un slot est une fonction qui va être appelée en réponse à un signal particulier. De même, les classes de Qt possèdent de nombreux slots prédéfinis, mais il est très courant d’hériter de ces classes et de créer ses propres slots afin de gérer les signaux qui vous intéressent. L’association d’un signal à un slot est réalisée par une connexion (connect()). LT La Salle Avignon 3 / 28 © tvaira@free.fr Qt Cours BTS SN-IR Question 3 (1 point) Parmi ces propositions, identifier celles qui sont des évènements ? 2 un déplacement de la souris 2 un appui sur une touche 2 afficher une image 2 se connecter à une base de données Question 4 (1 point) Parmi ces propositions, identifier celles qui sont des gestionnaire d’évènements (handler) ? 2 un déplacement de la souris 2 un appui sur une touche 2 afficher une image 2 se connecter à une base de données B.2 Structure générale de Qt L’API Qt est constituée de classes aux noms préfixés par un Q et dont chaque mot commence par une majuscule (QLineEdit, QLabel, ...). B.2.1 La classe QObject L’ensemble des classes est basé sur l’héritage. La classe QObject est la classe mère de toutes les classes Qt. En dérivant de QObject, un certain nombre de spécificités Qt sont hérités, notamment : – le mécanisme signal/slot de communication entre objets – une gestion simplifiée de la mémoire Les objets Qt (ceux héritant de QObject) peuvent s’organiser d’eux-mêmes sous forme d’arbre d’objets. Ainsi, lorsqu’une classe est instanciée, on peut lui définir un objet parent. Ceci permet entre autres : – lorsque le parent est détruit (delete), tous ces enfant le seront aussi – lorsque le parent est affiché (show()), tous ces enfant le seront aussi – lorsque le parent est déplacé (show()), tous ces enfant le seront aussi – ... LT La Salle Avignon 4 / 28 © tvaira@free.fr Qt Cours BTS SN-IR Pour bénéficier des spécificités de Qt, il faudra hériter de QObject ou d’une classe fille de QObject : class MaClasse : public QObject { Q_OBJECT public: MaClasse( QObject *parent=0 ) : QObject(parent) {} signals: void send( int ); // un signal public slots: void receive( int ); // un slot }; Les spéci cités Qt nécessitent l'utilisation du moc, un outil fourni par Qt, pour obtenir du code 100% C++. Un objet Qt peut avoir des propriétés. Toutes les propriétés sont des attributs de la classe que l’on peut lire et éventuellement modifier. Qt suit cette convention pour le nom des accesseurs : – propriete() : c’est la méthode qui permet de lire la propriété – setPropriete() : c’est la méthode qui permet de modifier la propriété À partir de la documentation : On pourra écrire : #include <QLineEdit> ... QLineEdit myLineEdit; // une zone de saisie // Pour lire la chaîne de caractères saisie dans un QLineEdit QString text = myLineEdit.text(); LT La Salle Avignon 5 / 28 © tvaira@free.fr Qt Cours BTS SN-IR // Pour modifier la chaîne de caractères d’un QLineEdit myLineEdit.setText("mon texte"); Pour connaître l'ensemble des classes, méthodes et propriétés de Qt, il faut consulter la documentation en ligne : doc.qt.io. B.2.2 Les modules Depuis, Qt4 sépare sa bibliothèque en modules : – QtCore : pour les fonctionnalités non graphiques utilisées par les autres modules ; – QtGui : pour les composants graphiques (qt4), maintenant QtWidgets (qt5) ; – QtNetwork : pour la programmation réseau ; – QtSql : pour l’utilisation de uploads/Management/ cours-qt.pdf
Documents similaires
-
13
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 08, 2022
- Catégorie Management
- Langue French
- Taille du fichier 2.9297MB