Ce tutoriel fournit une introduction à la programmation d'interfaces graphiques
(IHM, Interface Homme-Machine) utilisant la boîte à outils Qt.
Il ne couvre pas tout ; l'accent est mis sur la philosophie de la programmation IHM, et les fonctionnalités de Qt
sont introduites au fur et à mesure. Certaines fonctionnalités, qui sont souvent utilisées, ne sont pas couvertes
par ce tutoriel d'introduction à Qt.
Ce tutoriel est une traduction d'un des tutoriels écrits par Nokia Corporation and/or its subsidiary(-ies),
inclus dans la documentation de Qt 4.4.x en anglais.
Création : 18/01/2009 ·
Mise à jour : 02/10/2010 · 7 commentaires
La compilation des projets avec Qt peut être complexe. Il faut gérer les fichiers à l'aide de moc, uic
et autres. Il est plus simple de les gérer automatiquement avec l'outil standard proposé par Qt
ou à l'aide d'autres outils.
Cet article vous permettra de savoir installer Qt 4 avec le support pour MySQL, Firebird ainsi qu'OpenSSL. Vous aurez
à recompiler Qt 4. Toutefois, cet article vous guide pas à pas dans votre installation qui se déroule alors
sans problème.
Vous avez votre chaîne de compilation, votre librairie standard,
mais vous voulez compiler des applications utilisant Qt. Suivez ce
guide, il vous mènera au bout, de n'importe quelle plateforme
vers n'importe quelle autre.
Pour la gestion de la compilation de projets, Qt est fourni
avec son propre utilitaire : QMake. Cependant, le développeur
peut souhaiter travailler avec d'autres outils, par choix
personnel ou pour répondre à certains besoins. Cet article
présente en détail comment compiler des projets Qt en utilisant
CMake : le processus de compilation, les paramètres de
configuration, la gestion des modules Qt.
Création : 22/08/2010 ·
Mise à jour : 06/09/2010 · Commentez
Qt Quarterly est une revue électronique trimestrielle proposée
par Nokia à destination des développeurs et utilisateurs
de Qt. Ces articles sont écrits par des professionels de Qt,
qui ont de l'expérience avec ce framework : ces sommités nous
font part de leur expérience dans le domaine, pour simplifier
le développement et pour éviter des erreurs courantes.
La rédaction Qt de Développez vous propose la traduction de
certains articles.
Les Qt Labs sont les laboratoires des développeurs de Qt, où ils peuvent partager des impressions sur le framework,
son utilisation, ce que pourrait être son futur.
L'équipe Qt de Developpez.com fait une fois de plus partie des festivités pour les Qt Dev Days 2010 de Munich. Cette page regroupe les impressions et les photos du reporter sur place.
Qt DevDays 2010
par
Cédric Bonnier, Louis du Verdier, Jonathan Courtois, Thibaut Cuvelier
Developpez.com répondra de nouveau présent à l'événement de l'année pour les développeurs Qt à savoir les
Qt DevDays 2010 à Munich. Cette page regroupe la présentation des différentes conférences et accueillera par
la suite les différents reportages et interviews réalisés par l'équipe Qt de Developpez.com.
Des reporters de Developpez.com sont allés aux Qt DevDays 2009 à Munich.
Cette page regroupe les liens vers les différents mini-reportages ou vidéos de cet événement.
Création : 20/10/2009 ·
Mise à jour : 28/10/2009 · Commentez
Cet article est un résumé de la conférence « Animation Framework : A Step Toward Modern UIs »,
réalisée par Thierry Bastian durant les Qt Developer Days 2009 à Munich.
Cet article est un résumé de la conférence « Discover Qt Learning & Certification », réalisée par Vladimir Minenko
durant les Qt Developer Days 2009 à Munich.
Cet article est un résumé de la conférence « Case Study: Using Qt to Develop Advanced GUIs &
Advanced Visualization Software », réalisée par Tyson Ratliff durant les Qt Developer Days 2009 à Munich.
Deux reporters de Developpez.com sont allés aux Trolltech DevDays 2006 le 11 et 12 octobre à Munich.
Cette page regroupe les liens vers les différents mini-reportages ou vidéos de cet événement.
Lors des TrolltechDevDays2006, deux membres de developpez ont eu l'occasion d'interviewer plusieurs personnalités-clé
de l'entreprise Trolltech, en commençant par son co-PDG Eirik Chambe-Eng. Plusieurs technologies sont aussi présentées,
telles que QtJambi, l'intégration dans Visual Studio... Ils ont aussi eu l'honneur d'avoir Matthias Ettrich
à leur micro, ainsi que Thomas Schillings, Chief Technology Officer chez Trolltech.
Qt fournit divers outils pour aider à la traduction d'application, mais ils sont assez souvent mal utilisés, mal compris... Cette conférence tente d'en faire le tour ainsi que des utilisations un peu plus extrêmes et des problèmes fréquemment rencontrés.
Les pointeurs intelligents sont très nombreux dans Qt : pas
moins de huit classes différentes sont disponibles.
Tous ne sont pas publics, tous ne sont pas conseillés.
Cela en laisse quand même une belle floppée.
Après la description de tous ces pointeurs intelligents, un
approfondissement du dernier arrivé, QScopedPointer, sera
effectué.
Création : 27/08/2009 ·
Mise à jour : 31/10/2009 · 4 commentaires
Qt nous permet de connecter plusieurs signaux à un même slot.
Cela peut être utile pour donner à l'utilisateur différentes manières de réaliser la même action.
Cependant, nous voulons parfois que le slot se comporte légèrement différemment selon
le widget qui l'a appelé. Dans cet article, nous explorons diverses solutions, dont
l'utilisation de QSignalMapper.
Création : 08/02/2009 ·
Mise à jour : 06/07/2010 · 12 commentaires
L'arrivée de Qt 4.5 marque l'apparition de la classe QTextDocumentWriter, rendant possible la création
de fichiers au format OpenDocument (ODF) à partir de n'importe quel document Qt. Ceci ouvre la voie
à la création automatisée de documents et la distribution dans un format conforme aux standards
que l'utilisateur pourra ouvrir dans une large gamme de logiciels de traitement de texte.
Création : 05/08/2009 ·
Mise à jour : 10/07/2010 · 12 commentaires
Permettre la traduction facile des interfaces utilisateur est l'un
des points forts de Qt. Le support de l'unicode dès les fondations
et une infrastructure pour l'internationalisation permettent de
travailler facilement dans un environnement internationalisé.
Création : 15/04/2010 ·
Mise à jour : 10/07/2010 · Commentez
Comment créer des plug-ins avec Qt et de manière multiplateforme ? Comment permettre à mes utilisateurs d'étendre eux-mêmes mon application ? Ce tutoriel va détailler la création d'un système de plug-ins avec la bibliothèque Qt et le chargement de ces plug-ins depuis notre application.
Qt est un framework dont les fondations ne sont pas connues de la totalité des gens qui l'utilisent.
Bien entendu, il est possible de se demander en quoi un codeur d'interfaces graphiques peut avoir besoin
d'utiliser explicitement les méta-objets dans son code. Il est toujours intéressant de savoir sur quoi
est fondé un framework. Quel est le modèle objet utilisé ? Que sont les méta-objets ? Ce sont des questions
auxquelles cet article a pour but de répondre.
Création : 12/02/2010 ·
Mise à jour : 20/06/2010 · 9 commentaires
Le mécanisme des signaux et slots de Qt est très avancé et permet de communiquer entre les threads.
Cela est unique pour le moment et est aussi la cause de l'existence de moc et
de l'utilisation de qmake pour construire les projets Qt.
Tout le monde sait que tout framework, toolkit et langage plus récent que le C dispose de sa propre classe de chaîne de caractères. Certains disent même qu'il s'agit d'une fonctionnalité du langage C que de ne pas disposer d'un tel type, le gardant ainsi simple et effilé. D'autres en parlent comme d'un inconvénient, leur permettant de bomber la poitrine et de faire tomber les débutants dans le piège de la comparaison de chaînes avec == au lieu de strcmp().
Inspiré par le travail de Benjamin, Samuel et d'autres avec SIMD, profitant de l'opportunité d'apprendre le sujet directement avec les ingénieurs d'Intel, qui connaissent le sujet mieux que quiconque, j'ai décidé de mettre les mains dans le cambouis et de faire aussi un peu de SIMD, après quelques heures de travail. Puisque je ne comprenais pas les bases des modes de composition, de fondu ou de rendu, j'ai décidé de tenter ma chance sur quelque chose de compréhensible : QtCore.
La semaine dernière, j'ai eu deux jours assez ennuyants, j'ai donc, pour me motiver, décidé de passer du temps à mon activité favorite : regarder le code assembleur (non, je n'ai pas de vie). Je le fais généralement pour voir comment le compilateur a optimisé certaines portions de code. Par ce biais, on peut découvrir de nouvelles choses et des sources d'améliorations potentielles. Cette semaine-là, j'ai appris quelque chose.
La dernière fois, nous avons attaqué le problème de la conversion de Latin1 (ISO-8859-1) en UTF-16 pour les QString. Cependant, la plupart des caractères des expressions littérales en code C++ sont en fait en ASCII, un sous-ensemble de Latin1, qui a la conversion la plus facile vers UTF-16. Les performances de cette opération nous importent donc.
La dernière fois, nous avons arrêté nos expérimentations sur la faisabilité de remplacer le codec Latin1 par défaut par UTF-8. Le texte prévu était plus long, mais a été raccourci pour se concentrer sur le code et les performances, sans tenir compte du contexte, des raisons, des détails.
Ce week-end, un utilisateur a posté sur la mailing list qt4-preview-feedback un message disant que la documentation de QAtomicInt avait besoin d'un peu de travail. Je lui ai répondu que la sémantique d'ordonnancement mémoire serait mieux expliquée dans un livre que dans la documentation Qt.
En y repensant plus tard, je me suis dit que nous pourrions ajouter un peu de documentation à ce sujet. Voici un petit test.
Vous trouvez votres vues graphique trop statique ?
Vous avez envie de l'animer mais vous ne voulez pas gérer le moteur physique vous-même ?
Cet article vous présente Box2D qui s'occupe de toute la partie physique et qui peut facilement être lié avec Qt.
Mettre à jour à répétition les pixmaps des widgets peut bloquer
les programmes. Cet article montre comment améliorer la vitesse
d'exécution des applications en mettant en cache les pixmaps
obtenues en redessinant les widgets.
Création : 08/04/2010 ·
Mise à jour : 04/07/2010 · 6 commentaires
Le framework Undo/Redo de Qt, introduit avec Qt 4.2, fournit la possibilité de doter les utilisateurs de vos applications
avec des moyens d'annuler les changements apportés aux documents, tout en fournissant aux développeurs une API facile
à utiliser, basée sur le pattern Command.
Création : 26/05/2009 ·
Mise à jour : 08/07/2010 · 12 commentaires
Sur QtCentre, des personnes viennent à nous avec le problème récurrent de l'IHM gelant pendant de longues opérations.
Le problème n'est pas difficile à résoudre, mais vous pouvez le faire de façons différentes, donc j'aimerais présenter
un panel des options possibles qui peuvent être utilisées selon la situation à laquelle vous faites face.
Création : 16/05/2009 ·
Mise à jour : 10/07/2010 · 12 commentaires
Une fonctionnalité nouvelle et non présentée de Qt 4.5 est les widgets translucides de haut niveau ?
fenêtres dans lesquelles on peut voir au travers. Les applications utilisant la translucidité ?
beaucoup de lecteurs média par exemple ? ont constitué une vue courante des bureaux d'aujourd'hui,
et les demandes au sujet de ce dispositif sont tout à fait communes sur les listes d'adresses de Qt.
Contre toute attente, il n'y a pas beaucoup de kits d'utilitaires à l'extérieur qui supportent
la translucidité de manière multi-plateforme, nous avons donc vu le besoin d'exposer cette fonctionnalité
par le biais de l'écriture de cet article.
Création : 29/08/2009 ·
Mise à jour : 10/07/2010 · 12 commentaires
Cet article est une traduction d'un article écrit par Kent Hansen sur le blog officiel de Qt.
Il y explique comment intégrer facilement des gadgets logiciels (widgets) dans vos fenêtres Qt avec Qt WebKit.
Ce tutoriel est destiné à illustrer l'intégration du moteur 3D Ogre à Qt. Les concepts utilisés ici sont
tout à fait utilisables pour d'autres moteurs (comme IrrLicht) et/ou pour d'autres toolkits graphiques
(comme WxWidget ou gtkmm).
Avec les deux dernières versions de Qt, les performances ont été invariablement améliorées. Qt 4.5 a introduit les systèmes graphiques sous forme de plug-ins et de nombreuses améliorations de rendu. Qt 4.6, lui, ne s'est pas focalisé et les performances sur les systèmes embarqués n'ont cessé de s'améliorer avec chaque version de patch.
Le problème avec ces accélérations est qu'on tombe à court de voies d'amélioration pour la prochaine itération. Nous avons jeté un coup d'?il pour de nouvelles zones d'amélioration et, une fois de plus, Qt 4.7 sera plus rapide que ses prédécesseurs.
L'architecture modèle vue contrôleur (Model View Controler) est un modèle de conception (design pattern) bien connu et beaucoup utilisé lors de la création d'interfaces graphiques.
Ce tutoriel fournit une présentation de la bibliothèque GLC_lib, puis un exemple de programmation d'une application de visualisation 3D OpenGL utilisant GLC_lib.
Ce tutoriel présente l'utilisation du processeur graphique (GPU) pour créer des applications de rendu 3D et de calculs parallèles multiplateformes sous Qt. Deux API libres et multiplateformes seront utilisées afin de communiquer avec le processeur graphique : OpenGL pour la partie rendu 3D et OpenCL pour le calcul. Un des points-clés de ce tutoriel est la recherche d'optimisation des performances. Différentes méthodes de programmation seront proposées : partant de versions qu'on pourrait qualifier de "naïves" c'est-à-dire simples mais non optimisées, le souci de performances nous poussera à l'utilisation de techniques d'optimisation permettant souvent d'améliorer considérablement les performances. Un exemple récurrent est utilisé tout au long du tutoriel : la génération de terrain.
La première chose à faire lors de la conception d'un modèle est de penser à l'intérêt de ce que l'on fait. Dans ce cas, on veut un modèle qui stocke des informations concernant une scène 3D qui peut alors être rendue avec OpenGL et QGLWidget. La scène sera constituée de quelques objets, qui peuvent être définis de différentes manières offertes par la spécification OpenGL.
Ce genre de modèle est souvent basé sur des items, la première chose à faire est donc de définir ce que représente un item. Pour des scènes 3D, cela peut être un seul objet (modèle 3D). Au début, un set d'attributs (représentés comme des rôles dans l'implémentation MVC de Qt 4) devrait être défini et ensuite seulement la hiérarchie du modèle.
Ici, on expliquera quelles étapes doivent être effectuées pour obtenir un modèle OpenGL qui fonctionne et est prêt à fournir des données aux vues. Cet article est divisé en deux parties : ce qu'il faut implémenter pour un modèle en général puis une application au modèle OpenGL.
Dans la partie précédente de l'article, on a défini la structure et les attributs que le modèle encapsule. Maintenant, il est temps de rendre possible le stockage de données dans une structure arborescente.
Il y a deux méthodes pour le faire : la dure et la facile. La méthode la plus difficile est d'implémenter toutes les structures de données depuis zéro, alors que la plus facile dérive de QStandardItemModel et réutilise ses méthodes de stockage de données. Dans la plupart des cas, cette dernière méthode devrait fonctionner (cela fonctionne pour tout modèle dont les données sont stockées dans un QVariant), mais cela n'apprend pas grand-chose, on utilisera donc la méthode difficile, qui consiste à créer des structures de données et des méthodes personnalisées pour les utiliser.
Le framework Interview de Qt se charge du support du paradigme modèle-vue. Il ne gère pas de base la gestion des données distantes. On peut utiliser des solutions basiques, comme les modèles de QtSql, mais ces méthodes ne sont pas les plus efficaces.
Beaucoup de personnes ont demandé aux trolls de Nokia s'il était
possible de créer des jeux en QML et comment faire. Dans cet
article, l'auteur présente les tutoriels Samegame, Snake et
Minehunt et explique quelle approche utiliser.
Un petit tutoriel pour montrer comment changer le curseur de la souris lors du survol d'un bouton dans une application Qt mixte C++/QML.
Il n'existe apparemment pas de fonction QML pour changer le curseur de l'application, on le fera donc manuellement.
Si vous avez entendu parler de la plupart des news de Computex ou d'IDF cette année, vous devez savoir que MeeGo est le petit nouveau dans les bacs, sur lequel reposent bien des attentes, dont le fait qu'on puisse voir MeeGo tourner aussi bien qu'Intel le supportera avec AppUp. Ce que je peux vous dire, c'est que nous aurons MeeGo dans le collimateur sur ce site et que nous vous donnerons de la matière pour vous aider à vous mettre à la page avec MeeGo, ainsi que pour vous aider à développer toutes sortes d'applications cools pour l'OS MeeGo.
Depuis sa sortie, Qt Quick met en avant la possibilité de séparer la partie graphique de la partie logique d'une application. La partie graphique, l'interface utilisateur, est codée avec QML tandis que la partie logique est codée en C++ avec Qt. Une question que l'on peut alors se poser est la suivante : comment faire communiquer la partie QML avec la partie C++/Qt ? Ce tutoriel a pour objectif de répondre à cette question.
N'hésitez pas à commenter cet article !
Qt Quick correspond à une collection de technologies qui sont conçues pour aider les développeurs à créer des interfaces utilisateur intuitives, fluides et à l'apparence moderne, le genre d'interfaces graphiques de plus en plus utilisées sur les téléphones portables, lecteurs média, set-top boxes et autres appareils portables. Qt Quick est constitué d'un ensemble riche d'éléments d'interface utilisateur, d'un langage déclaratif pour la représentation d'interfaces utilisateur, et d'un moteur d'exécution de langage. Une collection d'API C++ est utilisée pour intégrer ces caractéristiques de haut niveau avec les applications Qt classiques. La version 2.1 de l'environnement de développement (EDI) Qt Creator introduit des outils utiles au développement d'applications Qt Quick. Ce livre blanc donne une introduction de Qt Creator et des outils de Qt Quick qu'il propose aux développeurs durant le cycle de vie concernant le développement de l'application.
L'offre de cette expérience requiert que des designers et des développeurs travaillent plus que jamais ensemble. Finie l'époque où les designers pouvaient encore faire du pixel mapping à tout bout de champ et s'attendre que des développeurs implémentent leur vision. Sont également finis les jours où les développeurs codaient entièrement en faisant attention aux performances, sans jeter un ?il au charme visuel. Le design, le développement et les tests doivent devenir un cycle itératif, non un chemin linéaire.
Dans cet article nous verrons comment utiliser la couche
d'accès aux données de Qt, comment s'en servir de source de
données pour des élements graphiques, et aller plus loin en
s'en servant dans la conception d'une application. Cet article
s'appuie sur le livre Qt4 et C++, programmation d'interfaces
GUI.
QxOrm est une bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
Le tutoriel qxBlog présente les principales fonctionnalités de la bibliothèque QxOrm avec la création d'un projet de gestion de blogs en C++.
Que vous soyez assis ou non à votre bureau, certains services de localisation et de cartographie disponibles sur Internet peuvent aussi être d'utiles outils de navigation - ou une intéressante distraction.
PyQt est un binding Python pour le framework graphique multiplateforme Qt édité par Nokia en C++.
Ce tutoriel a pour but de s'initier au développement rapide d'applications avec Python et Qt.
PyQt est un binding Python pour le framework graphique multiplateforme Qt.
PySide est un binding très proche, édité par Nokia, disponible sous LGPL, raison de son apparition.
Python est un langage qui permet de prototyper rapidement des applications. Il n'est pas toujours suffisamment rapide pour certaines applications, notamment du côté de PyQt ou de PySide, bindings Python de Qt. À ce moment-là, on peut commencer à migrer du code vers le C++ : ici sera montrée une technique qui permet d'appeler du code C++ depuis un script Python.
Le format XML connaît aujourd'hui une popularité grandissante : lisible par tous, il permet l'échange de données entre machines ou entre applications (QtDesigner sauvegarde son fichier xxx.ui au format XML). Pour écrire ou lire un document XML, il existe différentes méthodes.
Le 12 octobre 2009, durant les Qt Developpers Days 2009 à Munich, Nokia lancé une première certification basique sur Qt pour que les développeurs utilisant ce framework valident leurs compétences sur cette technologie.
Le 11 octobre 2010, au cours du même événement, Nokia sort deux certifications Qt avancées en version beta qui seront disponibles dans les centres de test au début de l'année 2011.
Les certifications font maintenant partie de la formation des développeurs Qt et sont un passage obligé pour prouver et valider ses connaissances.
Qt fournit divers outils pour aider à la traduction d'application, mais ils sont assez souvent mal utilisés, mal compris... Cette conférence tente d'en faire le tour ainsi que des utilisations un peu plus extrêmes et des problèmes fréquemment rencontrés.
À travers ce tutoriel vous allez apprendre à intégrer simplement un widget OpenGL dans une application Qt, grâce au module QtOpenGl, disponible dans toutes les versions de Qt. Cet article étendra vos connaissances à ce module de Qt jusqu'à votre premier widget 3D.
Qt est un toolkit fabuleux disposant de kits d'intégration pour divers IDE dans sa version commerciale mais quasiment aucun pour sa version Open Source. Ce tutoriel cherche à vous faciliter l'intégration de Qt avec Apple Xcode pour Mac OS X.
Vous avez toujours rêvé de savoir à quoi correspondait ABI, name mangling, et autres virtual tables ?
Vous savez déjà ce dont il s'agit, mais vous aimeriez en savoir plus ? Alors cet article est pour vous !
10 minutes pour géolocaliser. Vous avez tous fait des bases de données contenant l'adresse,
le code postal et la ville d'un client ou d'un utilisateur. Grâce à GoogleMaps,
quelque soit votre langage de programmation, vous pouvez accéder à une carte de localisation.
Les pointeurs intelligents sont très nombreux dans Qt : pas moins de huit classes différentes sont disponibles.
Tous ne sont pas publics, tous ne sont pas conseillés. Cela en laisse quand même une belle floppée.
Après la description de tous ces pointeurs intelligents, un approfondissement du dernier arrivé, QScopedPointer,
sera effectué.
Bienvenue dans le minitutoriel pour apprendre à utiliser QtXml qui permet d'utiliser des données XML dans une application Qt. Nous y apprendrons à utiliser le XML via DOM !
CMake est un outil qui lit des fichiers de script et produit des fichiers natifs pour la plateforme sur laquelle il est lancé pour la compilation d'un projet.
ors que beaucoup sont enthousiastes au sujet des technologies QML et JavaScript, quelques-uns d'entre nous continuent de coder en C++. Le C++ est sur le point d'être mis à jour : le C++11 (anciennement connu sous le nom C++0x). Le projet final a été approuvé en mars dernier par le comité de normalisation du C++ et la spécification finale devrait être publiée cet été.