Catégorie : Programmation     Tags :      0 Commentaire

     Retrouvez cet article dans : Linux Magazine 90

    Il s’agit d’un IDE (Integrated Development Environment) opensource et multiplateforme dédié à la programmation Qt. Son interface est simple, intuitive et possède toutes les fonctionnalités nécessaires au développement. Sa bonne intégration à Qt permet au développeur de se concentrer sur son code. Cet article vous propose d’en découvrir brièvement les possibilités.

    Présentation

    Les aptitudes multiplateformes de la bibliothèque Qt offrent la capacité de développer simplement sous plusieurs environnements. Dans ce contexte, il est intéressant de disposer d’un outil fonctionnant à l’identique sur tous les systèmes.
    QDevelop est un environnement de développement (IDE en anglais) écrit en Qt4 et spécialisé dans la programmation Qt. Simple d’emploi, mais performant, il possède un niveau agréable d’utilisation, avec les fonctionnalités classiques d’un IDE. QDevelop ne veut pas concurrencer les " poids lourds " comme KDevelop ou Visual Studio. Ces deux outils sont plus complets, mais aussi très souvent bien trop compliqués à maîtriser par le débutant et peu adaptés au développement Qt. QDevelop est un outil léger, rapide à mettre en œuvre et fonctionnant sur les machines les plus modestes. Il est composé d’un exécutable autonome permettant de l’installer, par exemple, sur une clé USB comme outil de développement portable. À noter que malgré la similitude des noms, QDevelop n’est pas un KDevelop imité ou réduit et que les deux projets ont un code source totalement indépendant.

    Découverte de l’interface utilisateur

    En lançant l’application, on découvre une interface familière et classique aux environnements de développement disposant d’un menu déroulant et d’une barre d’icônes. Sur la gauche, l’explorateur de fichiers est destiné à recevoir les fichiers éditables, groupés par catégories. La console de sortie, située en bas de l’application, bénéficie d’une organisation par onglet et affiche les messages issus des différents traitements comme la compilation, le débogage et les variables en mode débogage. Actuellement, l’application est disponible en huit langues, dont le français. Au lancement, il reconnaît seul la langue du système installé et affiche une interface utilisateur appropriée.

    /img-articles/lm/90/art-6/fig-1.jpg

    Fig. 1 : L’interface utilisateur

     Le principe de plug-ins, optionnel, lui donne la faculté d’étendre ses fonctionnalités. En effet, l’utilisateur peut choisir d’installer ceux qui lui semblent utiles et ne pas charger le programme inutilement. Par exemple, le plug-in ASyle, disponible sur le site de QDevelop, peut-être téléchargé, puis installé. Il permet d’indenter et de reformater le code C++ présent dans l’éditeur. Plusieurs styles prédéfinis sont fournis comme l’indentation ANSI, K&R, Linux, GNU et la possibilité de créer son propre style de manière très fine.

    Les outils externes

    QDevelop contrôle, lors de son lancement, la présence des composants logiciels externes, dont il a besoin pour fonctionner correctement :

    • Qt version 4 et ses principaux composants : qmake, designer, assistant ainsi que les outils de traductions : linguist, lupdate et lrelease ;
    • minGW-make.exe sous Windows ou make dans les autres environnements ;
    • gdb apportant la capacité à déboguer les programmes ;
    • Exuberant Ctags utilisé pour analyser les fichiers sources et remplir l’explorateur de classes.

    /img-articles/lm/90/art-6/fig-2.jpg

    Fig. 2 : Contrôle des logiciels externes

     

    Sur certaines distributions Linux récentes, le lien /usr/bin/ctags pointe vers emacs ctags qui est une version qui ne convient pas. Dans ce cas, il convient de modifier le chemin et d’indiquer /usr/bin/ctags-exuberant dans le dialogue de contrôle des outils externes.

    Fichiers projet

    Une des qualités de QDevelop est d’être non intrusif. En effet, le format des fichiers projets créés ou modifiés est identique à celui utilisé par qmake, l’outil fourni avec Qt permettant de créer facilement les fichiers Makefile nécessaires à la compilation des projets. Ainsi, un projet créé avec QDevelop pourra être compilé sans problème en ligne de commande. De la même façon, un projet Qt standard sera ouvrable et modifiable dans l’IDE. Pour rappel, les fichiers projet de Qt sont identiques quelle que soit la plate-forme.
    Certaines restrictions existent néanmoins au niveau de la compatibilité de QDevelop avec les fichiers projets. En effet, certaines variables, notamment celles contenant les signes $$ ne sont pas prises en compte par l’application. Il en va de même pour les fonctions comme for() ou message() qui peuvent être présentes dans certains fichiers projet. Ces quelques limitations ne gênent néanmoins pas la création de projets complexes. QDevelop gère très bien les projets de type SUBDIRS (c’est-à-dire un projet contenant lui-même des projets) qui sont ouverts en cascade dans l’explorateur.
    La création de nouveaux projets s’effectue très simplement grâce à l’assistant accessible par le menu " Projet|Nouveau projet... ". Trois types de modèles sont proposés lors de la création :

    • basé sur un QDialog ;
    • basé sur un QMainWindow ;
    • projet vide : l’utilisateur doit ajouter lui-même les fichiers au projet.

    Suivant l’application que l’on veut développer, le choix d’utilisation d’une classe héritant de QDialog ou QMainWindow se pose. Un QDialog est adapté aux " petites " applications ayant une seule fenêtre alors que la QMainWindow permet de réaliser une interface utilisateur plus élaborée. En effet, cette dernière dispose d’une barre de menus, d’outils et peut ouvrir simultanément plusieurs fenêtres.
    Après avoir validé la création d’un projet d’un des deux premiers types, la compilation, puis l’exécution du programme permettent d’afficher la fenêtre du nouveau programme. Cet assistant de création de projets, utile à tous, réjouira le débutant en programmation Qt qui pourra ainsi générer un programme immédiatement fonctionnel sans passer par les étapes manuelles de création et compilation d’un projet, souvent sources de découragement.

    Éditer les fichiers

    L’édition d’un fichier présent dans l’explorateur peut-être lancé par un double-clic ou en choisissant l’option équivalente dans le menu contextuel. Celle-ci est effectuée dans l’éditeur intégré pour les fichiers sources et d’en-têtes C++. Cet éditeur dispose des fonctionnalités que l’on peut attendre d’un éditeur moderne : coloration syntaxique, complétion de code, indentation automatique, etc. En haut de l’éditeur, se trouvent deux listes déroulantes qui contiennent les classes et les méthodes présentes dans le fichier. En choisissant une méthode, l’éditeur se positionne dans le source à l’emplacement correspondant. Ce dispositif astucieux permet de se déplacer rapidement à l’intérieur de l’éditeur.
    Lorsqu’il s’agit d’un fichier dialogue (.ui) ou d’un fichier de traduction (.ts), l’édition est réalisée en externe en appelant les programmes correspondants. Le deuxième onglet de l’explorateur affiche chaque classe du projet ainsi que les méthodes et données. Il permet d’accéder dans l’éditeur aux définitions ou déclarations.

    Compiler

    La compilation des projets est réalisée en utilisant gcc sous Linux et Mac OS ou MinGW, son équivalent sous Windows. À noter que MinGW est le seul compilateur officiellement supporté sous Windows dans la version open source de Qt. Pour la compilation, QDevelop s’interface avec la commande make et affiche les messages issus de la compilation dans la console de sortie. Lorsque des problèmes sont détectés, l’environnement permet de se placer directement dans l’éditeur sur les lignes ayant causé des erreurs ou des avertissements.

    Déboguer

    En phase de mise au point, le débogage des programmes peut se révéler utile, voire indispensable. L’application donne la possibilité de déboguer en s’interfaçant à GNU gdb, le débogueur présent dans les trois environnements. Il permet la pose de points d’arrêts ainsi que la visualisation des variables du programme. Un petit plus que les développeurs Qt apprécieront est la faculté d’afficher directement le contenu des QString, ce que ne permettent pas les autres outils comme KDevelop. À noter que les variables locales à une fonction sont automatiquement affichées lorsque le programme est stoppé sur un point d’arrêt.

    /img-articles/lm/90/art-6/fig-3.jpg

     Fig. 3 : L’affichage des variables en mode débogage

     

    Gdb permet l’affichage de la pile des appels par la commande backtrace qui liste chacune des fonctions traversées lors de l’exécution et permet ainsi de débusquer les erreurs de programmation. QDevelop propose cette fonctionnalité en affichant dans une fenêtre le résultat de la commande. Un clic sur une des lignes affiche, lorsque c’est possible, le fichier source correspondant dans le projet.

    Sous-classer les dialogues

    Les fichiers dialogues (.ui) créés avec Qt Designer contiennent du XML et nécessitent d’être transformés en fichiers d’en-têtes C++ afin d’être compilés avec le projet. Pour les dialogues du projet, cette transformation est lancée automatiquement au moment de la compilation. Cette conversion qui rend les dialogues compréhensibles par le compilateur ne permet pas d’entrer le code à exécuter par ces dialogues. Une fonctionnalité intéressante de QDevelop est de fournir une assistance à l’implémentation des dialogues. En pratique, un clic sur le fichier (.ui) dans l’explorateur suivi du choix " Sous-classage du dialogue... " affiche la fenêtre de sous-classage. Cette dernière liste tous les widgets présents dans le dialogue et permet, pour chacun d’eux, de choisir les signaux à implémenter (figure 4).
    Le sous-classage s’effectue dans deux nouveaux fichiers (.h) et (.cpp) contenant une nouvelle classe héritant du fichier d’en-tête généré lors de la compilation. La nouvelle implémentation contient pour chacune des lignes sélectionnées, un nouveau slot associant le nom de l’objet et le signal choisi. C’est le mécanisme d’autoconnexion des objets qui est utilisé pour le sous-classage des dialogues. Par exemple, un bouton nommé resultat avec le signal clicked() sélectionné provoquera la création de la méthode void on_resultat_clicked().

    /img-articles/lm/90/art-6/fig-4.jpg

    Fig. 4 : Le sous-classage des dialogues

    Cette méthode sera appelée lors de l’exécution lorsque le bouton sera cliqué par l’utilisateur. Ce principe est valable pour les widgets comme pour les entrées de menu ou les boutons de barre d’outils.

    Appeler Qt Assistant

    Qt est livré avec une excellente documentation de référence accessible à partir d’un navigateur ou à l’aide de l’outil livré avec Qt. Lors de l’édition de code source, QDevelop permet de simplifier la recherche de documentation. En effet, en pressant la touche [F1] sur un mot clé de la bibliothèque, Assistant est appelé avec le bon contexte.

    Conclusion

    QDevelop est un projet jeune débuté en juin 2006, mais déjà assez complet et pleinement fonctionnel. Il vous permettra de créer facilement des projets Qt en utilisant l’assistant de création de projet ou d’ouvrir des projets existants. Mais surtout, son aptitude à être compilé et utilisé sur plusieurs plateformes permettra au développeur de retrouver un univers identique d’un environnement à l’autre.

     

    Références :

    • Page d’accueil de Qdevelop : http://qdevelop.org
    • Trolltech, la société éditrice de Qt : http://www.trolltech.com
    • Le site de la communauté francophone : http://qtfr.org

      Retrouvez cet article dans : Linux Magazine 90

    Posté par (La rédaction) | Signature : Jean-Luc Biord | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.