Créer des applications avec Qt 5

Posté par . Édité par ZeroHeure et Xavier Teyssier. Modéré par ZeroHeure. Licence CC by-sa
25
16
jan.
2014
Doc

Fin 2013 a vu sortir la version 5.2 de Qt et le premier livre sur Qt 5.

Publié aux éditions D-BookeR et écrit sous la direction de Jonathan Courtois, cet ouvrage vise avant tout à présenter les aspects nouveaux de la version 5 : si vous cherchez de la documentation sur l'emploi de Qt Widgets par exemple, mieux vaut vous tourner vers les anciens livres.

Considérant que chaque lecteur a des besoins propres, il est organisé selon une logique thématique plutôt qu'une progression linéaire. Vous pouvez donc lire les chapitres dans l'ordre que vous voulez. Bien sûr, si vous débutez, ne commencez pas par le plus compliqué.

Les explications sont assorties de nombreux exemples, représentatifs de la diversité de ses auteurs.

Couverture Créer des applications avec Qt 5

La table des matières est en seconde partie.

Table des matières

  1. Tour d'horizon
  2. Migration de Qt 4 à Qt 5
  3. Installation de Qt et introduction à Qt Creator
  4. Premiers programmes (avec Qt Widgets)
  5. Aller plus loin avec Qt Creator
  6. Déploiement d'applications

Qt Quick

  1. Qt Quick Designer
  2. Démarrer en QML
  3. Introduction à JavaScript pour Qt Quick
  4. Gérer l'interactivité
  5. Organiser ses interfaces graphiques
  6. Optimiser son développement
  7. Étude d'une première application avec Qt Quick
  8. Enrichir l'interface graphique
  9. Qt Quick, QML et C++
  10. Ouvrir son application vers l'extérieur
  11. Test et débogage

Graphics View

  1. Démarrer avec le framework Graphics View
  2. Notions avancées
  3. Étude d'une application créée avec Graphics View

Disponible en consultation en ligne, ebook téléchargeable ou livre imprimé.
Sur le site de l'éditeur : possibilité d'achat à la carte et bénéfice des mises à jour avec alerte pour les versions numériques.

NdM: Cette nouvelle éditrice propose déjà un petit catalogue intéressant et permet au visiteur intéressé par un livre d'en consulter extraits, code source, vidéos accompagnatrices, description de chapitres, … et surtout elle vous permet d'acheter à la carte, chapitre par chapitre, et en différents formats : papier, pdf, epub, html

  • # Déçu

    Posté par (page perso) . Évalué à 10.

    Je l'ai, je suis extrêmement déçu. Je voulais un livre qui apprennent vraiment Qt comme si on avait aucune connaissance mais ce livre vous demande de connaître un minimum. Il est presque intégralement consacré à Qt Quick. Si vous comptez apprendre à faire du Qt 5 en C++, c'est vraiment pas celui là qu'il vous faut.

    l'azerty est ce que subversion est aux SCMs

    • [^] # Re: Déçu

      Posté par . Évalué à 10.

      Bonjour,
      ta remarque m'intéresse pour une raison simple: j'essaye d'amener "des gens" à développer en Qt. Tes demandes, besoins, freins et problèmes sont donc à noter précieusement comme étant des "choses" à anticiper de notre côté.

      Peux tu donc en dire un peu plus:
      - la poo c'est bon tu maîtrise ou pas du tout ? (sous entendu est-ce que tu pensais trouver des informations quand aux concepts de poo)
      - c++ c'est "tout neuf" pour toi ? ou tu connais déjà ?
      - std:: ça te parle ?
      - …/… question ouverte je ne veux pas rentrer dans un listing qui fermerait la porte à des envies / idées / ouvertures …

      Merci d'avance,
      Éric

      • [^] # Re: Déçu

        Posté par . Évalué à 5.

        Cool que tu passes par là, je cherche moi aussi un livre sur le développement Qt.
        Concernant un peu mon profil, voici ce que je pense de pertinent à savoir :
        - je connais la POO, sans forcément être un expert dans le domaine, mais ce n'est pas ce que je vais rechercher dans un bouquin traitant du Qt
        - C++ c'est presque tout neuf. Je connais bien le C, le python et le Java, je me suis déjà lancé dans l'apprentissage du C++, mais j'ai a chaque fois rapidement arrêté (faute temps).
        - std:: me parle un peu, mais comme dit précédement, j'ai jamais pratiqué.

        Pour moi, mais je me trompe peut être, Qt modifie pas mal le C++ en l'enrichissant et simplifiant certains aspects. Du coup, quittes à me lancer dans l'apprentissage, je me lancerais bien directement dans celui du C++/Qt, et pourquoi pas ensuite spécialiser certains aspects via apprentissage du "C++ pur"

        Après, mon approche est peut être pas la bonne, et si tel est le cas, je suis partant pour avoir des conseils pour mieux me lancer dans le Qt

    • [^] # Re: Déçu

      Posté par . Évalué à 6.

      Il est presque intégralement consacré à Qt Quick.

      En même temps de ce que j'ai compris c'est l'avenir de Qt, non ?

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Déçu

        Posté par (page perso) . Évalué à 0.

        Qt Quick c'est bien pour le prototypage notamment, je pense pas que ça remplacera Qt Widgets.

        l'azerty est ce que subversion est aux SCMs

        • [^] # Re: Déçu

          Posté par . Évalué à 9.

          Hum… Les interfaces en mode déclaratif c'est un peu plus qu'une mode. gtk/glade, edj, pas mal de techno web, etc

          J'avais lu sur developpez.com que Quick était la manière principale de faire des IHM à partir de 5.X (ce qui n'implique pas une dépréciation de QWidget pour autant).

          Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Déçu

            Posté par (page perso) . Évalué à 10.

            Il suffit de voir que tout KDE est en train de passer en QML… Notamment parce que c’est plus simple, ça fait beaucoup moins de lignes de code et on maitrise plus facilement l’apparence.

            Écrit en Bépo selon l’orthographe de 1990

            • [^] # Re: Déçu

              Posté par . Évalué à 1.

              En effet je suis d'ailleurs impressionné de la vitesse à la quelle ils font le changement. Mais faut voir aussi que QML est utilisable pour devrait que depuis la version 5 (dans Qt4 il n'y avait pas les widgets c'était assez gênant).

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Déçu

                Posté par (page perso) . Évalué à 5.

                QML est utilisable pour devrait que depuis la version 5

                Et même 5.2.

                « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

              • [^] # Re: Déçu

                Posté par (page perso) . Évalué à 3.

                Attention, QML est "juste" le langage déclaratif, vous voulez parler de QtQuick.
                A propos de QML, qbs est un système de build très puissant qui permet de gérer des projets de toute sorte, de la compilation jusqu'au déploiement (contrairement à qmake et cmake, il gère entièrement toute la chaîne de compilation, un peu comme Scons), les fichiers projets sont tous décrits en QML.
                Je le recommande chaudement, le principe déclaratif du langage se prête vraiment bien à un système de build, et son expressivité et sa clarté sont un vrai régal.

  • # Trop chére

    Posté par (page perso) . Évalué à 3.

    Salut,

    Hélas pour moi (et surement d'autre), est trop chère, que ce soit 33€ pour le livre réel (si gros tome je peu comprendre), ou la version dématérialisé.
    Et hélas, la mode à la carte ne me conviens pas.

    Cordialement,

    Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

    • [^] # Re: Trop chére

      Posté par . Évalué à 1.

      Pas vraiment non c'est un prix correct pour ce type de bouquin.

  • # Autre livre en anglais

    Posté par . Évalué à 7.

    Sur Qt5, il existe également ce livre en cours de rédaction qui aborde les mêmes sujets :
    http://qmlbook.org/index.html

  • # ah bah

    Posté par (page perso) . Évalué à 10.

    Ah ben ça tombe bien, je viens justement de l'acheter.

    C'est encore un peu tôt pour donner un avis pertinent, mais quelques remarques quand même.

    J'ai déjà développé avec Qt4 mais relativement peu, en fait je m'y suis surtout mis il y a 2 ans pour une interface SàT que j'ai dû mettre en pause à cause de ma vie professionnelle. Du coup j'ai vu une mention de ce bouquin sur le net et je suis parti l'acheter en librairie.

    Première remarque: c'est cher. Les bouquins d'infos sont souvent chers, mais là c'est la fourchette vraiment haute (65 € pour l'édition papier). Je prends un bouquin justement pour ne pas avoir à lire sur un écran (sinon j'aurais juste pris la doc officielle Qt), du coup les éditions numériques ne m'intéressent pas. Contrairement à ce qui est dit ici, la qualité d'impression me semble suffisante pour ce type de livre (d'après la réponse à ce commentaire, l'imprimeur a été changé depuis les premiers livres).

    Comme indiqué, ça parle surtout de QML, ça tombe bien c'était ce que je voulais connaître principalement, vu que j'ai déjà des notions pour le reste. Il y a quand même quelques chapitres sur Qt Widgets, de quoi se rafraîchir la mémoire. En plus il y a un chapitre pour le passage Qt4 => Qt5. Par contre, je ne vois pas ce que la lecture « par module » change, dans n'importe quel bouquin on peut sauter les chapitres qu'on maîtrise déjà ou qui ne nous intéressent pas.

    Ça évoque très rapidement des concepts de base pour de la programmation (très très basiquement la programmation orientée objets, ou des notions de bases de javascripts). Dans mon cas c'est totalement inutile, mais ça peut être intéressant pour filer le bouquin à des non programmeurs (c'est visiblement le but recherché).

    Ça a l'air assez complet aussi: encore une fois je viens de commencer, mais ça parle de Qt Creator, Qt Designer, des outils de débogage, de la transition Qt4 => Qt5, etc. Enfin assez complet pour la partie interface graphique, ça ne parle pas ou très bièvement du reste du cadriciel, en introduction il est précisé que d'autres bouquins sont envisagés.

    Bon dans mon cas, QML/Qt Quick a l'air très facile à assimiler (surtout que je connais déjà CSS, Javascript, les EFL et en particulier Edje dont QML s'inspire visiblement). Le prix est trop élevé mais le livre a l'air bien et surtout va me permettre de me remettre à jour en me sortant un peu la tête de ce satané écran…

    Bon bref, on verra si à la fin de la lecture j'en suis toujours content, et c'est bien de voir de la presse francophone sur Qt…

  • # Quelques précisions

    Posté par . Évalué à 6.

    Bonjour à tous

    Je suis l'un des auteurs du livre (Guillaume Belz), je vais essayer d'expliquer un peu pourquoi le livre est orienté sur Qt Quick.
    Déjà pour commencer, il y a des chapitres et le sommaire détaillé en libre accès sur le site de l'éditeur : http://www.d-booker.fr/110-qt-5-les-essentiels.html. N'hésitez à pas à les lire pour vous faire une idée du contenu du livre.

    Il y a plusieurs arguments pour justifier le choix de Qt Quick :
    - les devs de Qt veulent se focaliser sur Qt Quick pour l'UI. On peut s'attendre à termes qui les widgets se développent plus lentement (par exemple pour l'optimisation, les éléments QML ont des optimisations spécifiques que n'ont pas les widgets : graphscene, opengl, JS engin V8, etc)
    - facilité de mettre à jour une interface QML, sans compilation. Cela fait gagner pas mal de temps lors de la phase de création de l'UI ou lors de mise à jour de l'UI sans modification du code métier
    - faciliter de travaille en équipe avec des designers ou pour permettre aux utilisateurs de l'application de personnaliser leurs interfaces
    - faciliter d'apprentissage du QML et JS (en tant que dev C++, ça m'embêter de devoir réapprendre un autre langage… mais ça se fait sans problème)
    - utilisation de Qt Quick dans certaines distribution (Ubuntu, KDE, etc)

    Plus spécifiquement, pour le livre, nous avons choisit d'apporter une vrai plus-value à ce qui existe déjà en français sur Qt. Les auteurs du livre ont écrit de nombreux tuto en français sur Qt C++ (cf developpez.com), il y a des tutos correctes sur Qt (cf le site du zéro) et des livres (les Summerfield sont très bien fait). Même s'ils ont été écrit pour Qt 4, il n'y a pas beaucoup de changement pour les bases de C++/Qt entre Qt 4 et Qt 5. Par contre, il n'y avait rien sur Qt Quick en particulier.

    Pour répondre aux différentes remarques :
    @David Demelier : le livre a été écrit pour être lu aussi par des non développeurs, donc il ne nécessite pas d'avoir des connaissances préalable sur le C++ ou Qt, voir même de programmation (sauf certains chapitres spécifiques). Par contre, ce n'est pas en effet un livre uniquement sur Qt/C++ et les bases de Qt/C++ ne sont pas rappelées.
    @goffi : l'achat par chapitre peut être intéressant pour ceux qui sont intéressé que par une toute petite partie du livre. Par exemple des designers qui serait intéressé que pour la partie QML Designer. Ou des développeurs que pour la partie Interface C++ et QML.
    Pour la suite, il est effectivement prévu d'autres ouvrages. En fait, ce premier ouvrage n'aurait pas du être aussi gros, il aurait du rester un "Essentiel". Mais on en a fait trop (d'où l'impact sur le prix) et pas assez (il y a beaucoup de chose à approfondir, je pense que l'on est à 50 % de ce qu'on veut faire pour les bases du QML. Et il y a les fonctionnalités plus avancées…) Il faudra donc découper en plusieurs ouvrages

    Pour terminer, un point important : les auteurs sont impliqués dans la communauté Qt francophone (et Qt en général, puisse que l'on s'occupe de la traduction de Qt et Qt Creator en français), vous pouvez sans problème poser vos questions sur les forums (pour me contacter, de préférence sur qtfr.org ou fr.openclassrooms.com ou sur mon blog guillaumebelz.wordpress.com) et le livre suivra l'évolution de Qt

    Bonne lecture à tous

    • [^] # Re: Quelques précisions

      Posté par (page perso) . Évalué à 4.

      le livre a été écrit pour être lu aussi par des non développeurs

      heu, vraiment ? Genre un livre qui traite de comment créer des applications en Qt5 mais accessible pour des non développeurs ?

      donc il ne nécessite pas d'avoir des connaissances préalable sur le C++ ou Qt, voir même de programmation

      Je suis quand même surpris

      Par contre, ce n'est pas en effet un livre uniquement sur Qt/C++ et les bases de Qt/C++ ne sont pas rappelées.

      Heu, alors là je comprend plus vraiment. C'est un livre que Qt, accessible aux non développeurs (donc ne connaissant pas Qt ni C++) mais dans lequel on ne rappelle pas les bases de Qt ni C++ ?
      Il n'y aurait pas surtout un mélange de genre ?

      • [^] # Re: Quelques précisions

        Posté par . Évalué à 9.

        Bonjour,

        L'objectif était de rendre certains chapitres accessibles aux non-développeurs ou à des débutants, ce n'est bien sur pas le cas de tous les chapitres, ça n'aurait pas de sens, mais c'est le cas de l'Introduction, du Tour d'horizon, de l'introduction à Qt Quick et de Créer des interfaces avec Qt Quick Designer. Tous les membres d'une équipe de développement non pas besoin de connaître la technique, que ce soit un designer ou un commercial, certains chapitres de ce livre servent donc à répondre à leurs attente, d'où également le coté modulaire du livre pour acquérir si besoin seulement une partie. Le descriptif sur le site de l'éditeur le précise bien ainsi que l'introduction du livre (disponible gratuitement).

        Cela dit, il s'agit d'un livre expliquant la programmation à l'aide d'un framework dans sa version 5, il n'a donc pas la prétention d'apprendre un langage (comme le C++ ou le Javascript) ni de faire une liste exhaustive des possibilités de ce framework dans les versions antérieurs (Qt 4). Le livre est déjà conséquent dans son état actuel et il a été nécessaire de faire des choix de ligne éditoriale. Le choix d'ajouter un guide de débutant Javascript pour commencer rapidement en QML a été fait par exemple.

        Les développeurs du framework Qt ont fait le choix de s'orienter vers Qt Quick pour les interfaces graphiques, c'est un choix que les auteurs de ce livre ne peuvent qu'accepter et par la même occasion aller dans la même direction. C'est bien pourquoi Qt Quick et le langage QML (qui n'utilise pas le C++ mais bien le Javascript comme langage déclaratif) à une place dominante dans cette ouvrage. Le C++ n'a qu'une place secondaire et avancée dans l'utilisation de Qt Quick, il s'agit d'un sujet extrêmement riche et il a été fait le choix de ne pas faire de rappel de ce langage mais plutôt d'orienter le lecteur vers la littérature déjà accessible sur le sujet (dont de nombreux articles gratuits sur internet).

        Concernant les bases de Qt (à savoir le système de méta-objet, les signaux/slots, le système de compilation qmake, les parties du framework gérant le réseau, les systèmes de fichiers, les bases de données, etc.), de longues discussions ont eu lieu entre les auteurs pour savoir si oui ou non nous devions les traiter de nouveau dans cet ouvrage. La décision a été faite de ne pas le faire pour les raisons suivantes :

        • Peu de nouveautés depuis Qt 4, les nouveautés existantes ont été traité dans le chapitre Tour d'horizon et Migration Qt 4 à Qt 5 ;
        • Une littérature Française déjà présente sur le sujet : http://qt.developpez.com/livres/#L9782744040924 ;
        • Le Qt Project se tourne vers Qt Quick intégralement (peu de changements sur Qt Widgets), il était nécessaire de faire une grosse partie sur le sujet. Et comme l'a précisé Guillaume Belz, aucune litérrature Française n'existait sur le sujet et il est très vaste et de nombreux thèmes reste à être abordé ;
        • Qt Creator n'était pas non plus abordé dans la littérature Française, il a donc pris une place importante dans cet ouvrage.

        J'espère avoir répondu à vos questions et je comprends que les choix de ligne éditoriale ne peuvent pas satisfaire tout le monde.
        Jonathan Courtois

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.