1. Livres et vidéos
  2. Maîtrisez Qt 5 - Guide de développement d'applications professionnelles (2e édition)

Maîtrisez Qt 5 Guide de développement d'applications professionnelles (2e édition)

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

Ce livre sur Qt 5 s'adresse aux professionnels de l'informatique, développeurs débutants ou plus avancés, souhaitant maîtriser cet outil pour écrire du code de qualité et le tester, pour packager des applications et les distribuer sur les différents systèmes d'exploitation pour PC et mobiles, pour améliorer les performances des applications et satisfaire au mieux les exigences des utilisateurs. A ce titre, l’auteur présente les différents aspects de Qt 5, à la fois bibliothèque et framework, depuis ses fondations jusqu’aux éléments d’interface graphique multiplateformes. Pour tirer pleinement parti de ce livre, les lecteurs devront posséder des connaissances suffisantes en C++.

Étape par étape vous comprendrez la structure de la bibliothèque, le modèle objet de Qt et la programmation événementielle pour structurer vos applications et atteindre très vite des objectifs complexes. Lorsque vous maîtriserez ces fondamentaux, vous approfondirez les bibliothèques de composants en parcourant tous les modules de Qt : le module réseau (QtNetwork), le module SQL (QtSql), les modules graphiques 2D et 3D (QtGui), les modules de composants d'interface graphique et multimédia (QtWidgets et QtMultimedia). Cette seconde édition a également été enrichie pour intégrer les nombreuses évolutions de Qt comme le développement rapide d’applications avec le module QtQuick et le langage déclaratif QML, ou les API dédiées aux plateformes mobiles (capteurs, positionnement, cartographie, Bluetooth, NFC et achats in-app).

Les derniers chapitres vous permettront de rendre concret cet ensemble en l'appliquant au travail quotidien d'un développeur sérieux : la testabilité du code, qui est une réelle problématique d'entreprise, et le packaging des applications, pour leur diffusion sur tous les systèmes d'exploitation.

Les concepts présentés dans cet ouvrage sont illustrés par des exemples dont le code source est téléchargeable sur le site www.editions-eni.fr.


Les chapitres du livre :
Avant-propos – Introduction – L'environnement de développement – Les fondations de Qt – Anatomie d'une application – Développement rapide d'applications – QtCore et fondations – QtNetwork – QtSql – QtGui – QtWidgets – QtMultimedia – Les modules graphiques et web – API pour les plateformes mobiles – QtTest – qualité du code – Traduction d'une application – Publication d'une application – Techniques d'optimisation

Table des matières

  • Introduction
    • 1. Objectifs et méthode
    • 2. Glossaire
    • 3. Qt, qu'est-ce ?
      • 3.1 Histoire
      • 3.2 Compatibilité
      • 3.3 Notoriété
      • 3.4 Bibliothèque ou framework ?
      • 3.5 Documentation
    • 4. Connaissances requises
      • 4.1 UML
      • 4.2 Patrons de conception
      • 4.3 C++
      • 4.4 Contrôler ses connaissances
    • 5. Que peut-on faire avec Qt ?
      • 5.1 Applications pour PC
      • 5.2 Applications mobiles
      • 5.3 Applications serveur et web services
    • 6. Contrôle des connaissances
  • L'environnement de développement
    • 1. Objectifs
    • 2. Licence commerciale ou libre ?
      • 2.1 Propriété intellectuelle et GPL
      • 2.2 Diffusion de l'application
    • 3. Choisir judicieusement son compilateur
      • 3.1 Monoplateforme ou multiplateforme ?
      • 3.2 Maintenabilité du code
    • 4. Installer l'environnement de développement
      • 4.1 Le compilateur
      • 4.2 Plug-ins Qt
      • 4.3 Première installation
      • 4.4 Intégrer un autre environnement de compilation
    • 5. Maintenir à jour son environnement
      • 5.1 Profiter des dernières nouveautés
      • 5.2 Gérer le cycle de vie de son application
    • 6. Utiliser Qt Creator
      • 6.1 Organisation des projets
      • 6.2 Fenêtre principale
        • 6.2.1 Boutons d'accès aux modules
        • 6.2.2 Boutons de compilation et d'exécution
        • 6.2.3 Onglets de journaux
        • 6.2.4 Onglets de contenus additionnels
        • 6.2.5 Sessions récentes
        • 6.2.6 Projets récents
      • 6.3 Module d'édition
      • 6.4 Module de conception d'interfaces graphiques
      • 6.5 Module de débogage
      • 6.6 Module de configuration de projet
      • 6.7 Module de profilage
      • 6.8 Paramétrage
    • 7. Créer une application
    • 8. Création et gestion des ressources
    • 9. Contrôle des connaissances
  • Les fondations de Qt
    • 1. Objectifs
    • 2. La classe QObject
      • 2.1 Entité et identité
      • 2.2 Modèle de threads
      • 2.3 Affinité de thread
      • 2.4 Signaux et slots
        • 2.4.1 Le signal
        • 2.4.2 Le slot
        • 2.4.3 La connexion
        • 2.4.4 Différents types de connexion
        • 2.4.5 L'appel
        • 2.4.6 Éléments particuliers
      • 2.5 Arbre d’objets
      • 2.6 Timers
      • 2.7 Traduction
      • 2.8 Propriétés dynamiques
    • 3. Héritage
      • 3.1 Généralités
      • 3.2 Prototype
      • 3.3 Conversion de types
    • 4. Copie à l’écriture
      • 4.1 Comptage de références
      • 4.2 Partage implicite
      • 4.3 Partage explicite
    • 5. La classe QVariant
    • 6. Gestion des erreurs
      • 6.1 bool *ok = 0
      • 6.2 error()
    • 7. Le modèle event-driven
      • 7.1 Pourquoi Qt est-il orienté événements ?
      • 7.2 La notion de flux
      • 7.3 La run-loop
      • 7.4 La programmation asynchrone
      • 7.5 Appeler une fonction de manière asynchrone
        • 7.5.1 L'émission de signaux
        • 7.5.2 L'utilisation d'un timer
        • 7.5.3 La fonction invokeMethod
      • 7.6 Suppression explicite
      • 7.7 Avantages et inconvénients
      • 7.8 Gestion des ressources et performances
      • 7.9 Rendre ses algorithmes non bloquants
        • 7.9.1 Effectuer une boucle
        • 7.9.2 Faire une pause dans le programme
      • 7.10 Faire dialoguer des objets
    • 8. Les ressources
    • 9. Les propriétés
    • 10. Contrôle des connaissances
  • Anatomie d'une application
    • 1. Objectifs
    • 2. L'humain
      • 2.1 Les différents types d'applications
      • 2.2 Contenu d'un projet Qt
      • 2.3 Création d'une application
        • 2.3.1 En ligne de commande
        • 2.3.2 Avec Qt Creator
      • 2.4 Le fichier projet .pro
        • 2.4.1 Les directives de projet
        • 2.4.2 Les directives de chemins
        • 2.4.3 Les directives de précompilation
    • 3. La machine
      • 3.1 Les commandes externes
      • 3.2 La phase de compilation
    • 4. Contrôle des connaissances
  • Développement rapide d'applications
    • 1. Objectifs
    • 2. QtQuick et QML
      • 2.1 La programmation déclarative
      • 2.2 QML
      • 2.3 Les éléments
      • 2.4 MVC
      • 2.5 Limitations de QtQuick
    • 3. Création de l’application
      • 3.1 Création d’une application
      • 3.2 La scène
        • 3.2.1 Les éléments invisibles
      • 3.3 Les données
      • 3.4 Le contrôleur
        • 3.4.1 Initialisation de l’application
        • 3.4.2 Réaction aux événements
        • 3.4.3 Déclenchement des actions
      • 3.5 Les états et transitions
        • 3.5.1 États
        • 3.5.2 Transitions
    • 4. Contrôle des connaissances
  • QtCore
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Découverte de QtCore
      • 3.1 Le méta-objet
      • 3.2 Introspection
      • 3.3 Le méta-type
      • 3.4 Instanciation dynamique
    • 4. Créer et piloter des threads
      • 4.1 Paralléliser des tâches
        • 4.1.1 Les threads pilotés
        • 4.1.2 Un exemple
        • 4.1.3 Les tâches simples
        • 4.1.4 Lancer une tâche asynchrone
      • 4.2 Synchronisation par blocage et protection
      • 4.3 Synchronisation par notification
    • 5. Les structures de données
      • 5.1 Structures unidimensionnelles
      • 5.2 Structures multidimensionnelles
      • 5.3 Rechercher les performances
    • 6. QByteArray
      • 6.1 Instanciation
      • 6.2 Utilisation d’un pointeur existant
      • 6.3 Rechercher des sous-ensembles
      • 6.4 Convertir un QByteArray
    • 7. QBuffer
    • 8. QString
      • 8.1 Les chaînes C et les langues accentuées
      • 8.2 Les normes ISO, Unicode, UCS
      • 8.3 Échanger des données
      • 8.4 Composer des chaînes
      • 8.5 Listes de chaînes de caractères
      • 8.6 Découper des chaînes de caractères
      • 8.7 Extraire une sous-chaîne
      • 8.8 Rechercher une sous-chaîne
      • 8.9 Construire une chaîne à partir d’un nombre
      • 8.10 Convertir une chaîne en nombre
      • 8.11 Connaître la taille de la chaîne
    • 9. Interactions avec le système d'exploitation
      • 9.1 Exécuter une commande externe
      • 9.2 Les fichiers
    • 10. La gestion des paramètres
      • 10.1 QSettings
      • 10.2 Une classe propriétaire
    • 11. La sérialisation
      • 11.1 Mécanismes
      • 11.2 Exemples
    • 12. Les fichiers XML
      • 12.1 Écrire dans un fichier XML
      • 12.2 Lire un fichier XML
    • 13. Les fichiers JSON
      • 13.1 Lire un fichier JSON
      • 13.2 Écrire dans un fichier JSON
    • 14. Automate à états
      • 14.1 Automate simple
      • 14.2 Collaboration entre automates
      • 14.3 Automate fini
      • 14.4 Animer les changements de propriétés
    • 15. Fonctions et types globaux
      • 15.1 Conversion d’endianisme
      • 15.2 Types universels
      • 15.3 Fonctions globales
        • 15.3.1 Mathématiques
        • 15.3.2 Utilitaires
      • 15.4 Macros
      • 15.5 Fonctions mathématiques avancées
    • 16. Contrôle des connaissances
  • QtNetwork
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Accéder au réseau
      • 3.1 Portée de QtNetwork
      • 3.2 Appel bloquant vs non bloquant
    • 4. Sockets
      • 4.1 Client TCP
        • 4.1.1 Connexion avec un hôte
        • 4.1.2 Envoi d'une requête
        • 4.1.3 Lecture d'une réponse
        • 4.1.4 Fermeture et nettoyage
      • 4.2 Serveur TCP
      • 4.3 Client UDP
        • 4.3.1 Connexion à un hôte
        • 4.3.2 Envoi de données
        • 4.3.3 Lecture des données
        • 4.3.4 Fermeture de la connexion
    • 5. Internet
      • 5.1 Résolution DNS
        • 5.1.1 Résoudre un nom de machine
        • 5.1.2 Obtenir les enregistrements d'un nom de domaine
      • 5.2 Échange de fichiers avec FTP
        • 5.2.1 Client simple
        • 5.2.2 Client évolué
      • 5.3 Connexion à un serveur HTTP
        • 5.3.1 Création d'une requête
        • 5.3.2 Exécution de la requête
        • 5.3.3 Lecture du résultat
        • 5.3.4 Authentification
      • 5.4 Le chiffrement avec SSL et TLS
    • 6. Les interfaces réseau
    • 7. Contrôle des connaissances
  • QtSql
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Persistance des données
      • 3.1 Utilisation d'un serveur de données
      • 3.2 Ce que QtSql permet et ne permet pas
      • 3.3 Le modèle de conception approprié
    • 4. Connexion au serveur de données
    • 5. Effectuer une requête
      • 5.1 La requête
      • 5.2 Le résultat
      • 5.3 Le mode transactionnel
      • 5.4 Obtenir les métadonnées
      • 5.5 Rechercher les performances
        • 5.5.1 Préparation de la requête
        • 5.5.2 Exécution de la requête
        • 5.5.3 Stratégie d'instanciation
    • 6. Contrôle des connaissances
  • QtGui
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. QGuiApplication et QWindow
      • 3.1 QGuiApplication
      • 3.2 QWindow
    • 4. Rendu 2D
      • 4.1 Géométrie et positionnement
      • 4.2 Images
        • 4.2.1 QImage
        • 4.2.2 QPixmap
      • 4.3 Dessin 2D
        • 4.3.1 Dessiner des formes
        • 4.3.2 Dessiner du texte
    • 5. Rendu 3D
    • 6. Contrôle des connaissances
  • QtWidgets
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Flux d'application et de GUI
    • 4. Modèle objet et Vue-Modèle
      • 4.1 Vue-Modèle
      • 4.2 Architecture du code
    • 5. Créer avec Qt Designer
      • 5.1 Organisation du designer
      • 5.2 Mise en page
        • 5.2.1 Ergonomie
        • 5.2.2 Redimensionnement automatique
        • 5.2.3 Une mise en page plus complexe
        • 5.2.4 Modèle objet et relations
    • 6. Créer « à la main »
    • 7. Modes SDI et MDI
    • 8. Créer un menu
    • 9. Réagir aux événements
    • 10. Intégrer et afficher les dialogues créés
    • 11. Feuilles de style
    • 12. Gestion des événements
    • 13. Ressources
      • 13.1 Créer un fichier de ressources
      • 13.2 Utiliser une ressource dans le designer
      • 13.3 Accéder à une ressource depuis le code
    • 14. Widgets personnalisés
    • 15. Icône de notification (Tray icon)
    • 16. Composants graphiques 2D
    • 17. Drag and Drop
      • 17.1 Initialisation des widgets
      • 17.2 Mise en place du drag
      • 17.3 Mise en place du drop
    • 18. Copier-coller
    • 19. Ouvrir et enregistrer des fichiers
    • 20. Généraliser les styles
    • 21. Contrôle des connaissances
  • QtMultimedia
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Audio
      • 3.1 Lister les périphériques
      • 3.2 Enregistrer du son
      • 3.3 Lire un fichier
    • 4. Vidéo
      • 4.1 Enregistrer une vidéo
      • 4.2 Lire une vidéo
    • 5. Caméra
      • 5.1 Afficher en direct
      • 5.2 Enregistrer en direct
    • 6. Radio
      • 6.1 Lire un flux radio
      • 6.2 Enregistrer un flux radio
    • 7. Contrôle des connaissances
  • Les modules graphiques et web
    • 1. Objectifs
    • 2. QtSvg
      • 2.1 Intégration et interactions
      • 2.2 Rendu et affichage
      • 2.3 Exporter au format SVG
    • 3. QtPrintSupport
      • 3.1 Intégration et interactions
      • 3.2 Choisir l'imprimante
      • 3.3 Imprimer un dessin
      • 3.4 Imprimer un widget
      • 3.5 Imprimer du texte
    • 4. QtWebkitWidgets
      • 4.1 Intégration et interactions
      • 4.2 Afficher une page web
      • 4.3 Accéder au DOM
      • 4.4 Bases de données HTML 5
    • 5. Qt Charts
      • 5.1 Installation
      • 5.2 Licences
      • 5.3 Intégration
      • 5.4 Présentation
      • 5.5 Principe général
      • 5.6 Créer un diagramme en C++
      • 5.7 Créer un diagramme en QML
      • 5.8 Diagramme à barres
        • 5.8.1 C++
        • 5.8.2 QML
        • 5.8.3 Variantes
      • 5.9 Diagramme circulaire
        • 5.9.1 C++
        • 5.9.2 QML
        • 5.9.3 Variantes
      • 5.10 Diagramme à lignes
        • 5.10.1 C++
        • 5.10.2 QML
      • 5.11 Diagramme à surface
        • 5.11.1 C++
        • 5.11.2 QML
      • 5.12 Diagramme à points
        • 5.12.1 C++
        • 5.12.2 QML
      • 5.13 Diagramme à chandelles
        • 5.13.1 C++
        • 5.13.2 QML
      • 5.14 Combiner les diagrammes
      • 5.15 Modifier la légende
      • 5.16 Manipuler les axes
      • 5.17 Utiliser des thèmes de couleurs
      • 5.18 Interagir avec un diagramme
    • 6. Contrôle des connaissances
  • API pour les plateformes mobiles
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. L’environnement de développement
      • 3.1 Préparation
      • 3.2 Configuration
    • 4. Exécution d’une application
    • 5. Capteurs
      • 5.1 Utilisation générique
      • 5.2 Obtenir la liste des capteurs disponibles
      • 5.3 Lire les valeurs d’un capteur
      • 5.4 Lecture asynchrone
      • 5.5 Filtrer les données
    • 6. Positionnement
      • 6.1 Cas d’utilisation
        • 6.1.1 Position courante en C++
        • 6.1.2 Position courante en QML
    • 7. Cartographie
      • 7.1 Cartes et navigation
        • 7.1.1 Afficher un plan en QML
        • 7.1.2 Changer le type de carte
      • 7.2 Lieux et points d’intérêt
        • 7.2.1 Afficher la position courante
        • 7.2.2 Utiliser une adresse postale
        • 7.2.3 Mettre en évidence un point d’intérêt
        • 7.2.4 Calculer un itinéraire
    • 8. Bluetooth
      • 8.1 Cas d’utilisation
        • 8.1.1 Obtenir des informations sur le périphérique Bluetooth
        • 8.1.2 Rechercher des appareils distants
        • 8.1.3 Envoyer un fichier
        • 8.1.4 Échanger en direct entre périphériques
        • 8.1.5 Envoyer des notifications par Bluetooth LE
    • 9. NFC
      • 9.1 Cas d’utilisation
        • 9.1.1 Recevoir des tags NFC
        • 9.1.2 Envoyer un message
    • 10. Achats in-app
      • 10.1 Cas d’utilisation
        • 10.1.1 Enregistrer des achats in-app
        • 10.1.2 Effectuer un achat
        • 10.1.3 Restaurer les achats précédents
    • 11. Contrôle des connaissances
  • QtTest - qualité du code
    • 1. Objectifs
    • 2. Intégration et interactions
    • 3. Scénario de tests
    • 4. Tests unitaires et couverture de code
      • 4.1 Les assertions
      • 4.2 Exécution des tests
      • 4.3 Diversifier les données
      • 4.4 Événements GUI
      • 4.5 Tester les performances
    • 5. Non-régression
    • 6. Contrôle des connaissances
  • Traduction d’une application
    • 1. Objectifs
    • 2. Cycle de traduction
    • 3. Rendre traduisible son application
      • 3.1 Code source
      • 3.2 Vues
    • 4. Traduire son application
      • 4.1 Langue et région
      • 4.2 Traduction de l'application
        • 4.2.1 Exportation des textes
        • 4.2.2 Traduction des textes
        • 4.2.3 Compilation des traductions
      • 4.3 Intégration des traductions
    • 5. Contexte de traduction
    • 6. Contrôle des connaissances
  • Publication d'une application
    • 1. Objectifs
    • 2. Comprendre les licences
    • 3. Les dépendances
    • 4. Créer un installeur universel
    • 5. Créer un installeur pour Windows
      • 5.1 Programme compilé avec Microsoft Visual C++
      • 5.2 Programme compilé avec mingw
    • 6. Créer un installeur pour OS X
      • 6.1 Bundle
        • 6.1.1 Création
        • 6.1.2 Signature
      • 6.2 Fichier DMG
      • 6.3 Paquet d'installation
    • 7. Créer un paquet pour Debian/Ubuntu
      • 7.1 Arborescence
      • 7.2 Fichier de contrôle
      • 7.3 Création du paquet
    • 8. Inclure les plug-ins de Qt
      • 8.1 Windows
      • 8.2 OS X
      • 8.3 GNU/Linux
    • 9. Tester son application
    • 10. Contrôle des connaissances
  • Techniques d'optimisation
    • 1. Objectifs
    • 2. Langages et mode de pensée
    • 3. Notions de C++ indispensables
      • 3.1 Pointeurs et références
        • 3.1.1 Pointeurs C
        • 3.1.2 Références
      • 3.2 Copie d'objets
        • 3.2.1 Copie superficielle (shallow copy)
        • 3.2.2 Copie en profondeur (deep copy)
        • 3.2.3 Copie paresseuse (lazy copy)
        • 3.2.4 Partage implicite
    • 4. Optimisations
      • 4.1 Le modèle objet
      • 4.2 Le cycle de vie des objets
      • 4.3 Les classes optimisées
        • 4.3.1 QByteArray
        • 4.3.2 QStringRef
      • 4.4 Optimiser l’utilisation du processeur
    • 5. Quelques particularités de Qt
      • 5.1 Types primitifs
      • 5.2 Gestion de la mémoire
        • 5.2.1 Cycle de vie
        • 5.2.2 Structures de données
      • 5.3 STL, Boost et Qt
      • 5.4 Réentrance
      • 5.5 Exceptions
    • 6. Lectures complémentaires
    • Index

Auteur

Tristan ISRAËLEn savoir plus

Ingénieur et titulaire d'un MBA (Master in Business Administration), Tristan Israël est développeur professionnel C et C++ depuis 1997 et spécialisé sur Qt depuis 2005. Aujourd'hui, il apporte son expertise du développement Qt à des grands comptes industriels pour le développement d'applications spécifiques et complexes. Titulaire de trois certifications Qt, il partage ses connaissances au travers d'ateliers de formation en entreprise qui sont aussi l'occasion pour lui de transmettre sa passion pour cette plateforme qui lui permet de concilier le plaisir d'utiliser les technologies C avec le respect de la qualité fonctionnelle et ergonomique des applications qu'il crée.

Caractéristiques

  • Niveau Expert
  • Nombre de pages 656 pages
  • Parution janvier 2018
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-01176-4
    • EAN : 9782409011764
    • Ref. ENI : EP25QT
  • Niveau Expert
  • Parution janvier 2018
    • HTML
    • ISBN : 978-2-409-01177-1
    • EAN : 9782409011771
    • Ref. ENI : LNEP25QT

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (158 Ko)