Très bien, excellents ouvrages, diversité des moyens de paiement (paypal...)
PHILIPPE PMaîtrisez Qt Guide de développement d'applications professionnelles (3e édition)
1 avis
Ce livre sur Qt, à la fois bibliothèque et framework, 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...
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Expert
- Nombre de pages 842 pages
- Parution novembre 2022
- Niveau Expert
- Parution novembre 2022
Ce livre sur Qt, à la fois bibliothèque et framework, 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. L’objectif du livre est de présenter Qt des bases jusqu’aux éléments d’interface graphique multiplateformes. Il ne se substitue pas à la documentation exhaustive des classes de Qt mais en présente certaines pour accompagner le lecteur dans sa découverte. 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 vos connaissances sur 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) et bien d’autres pour terminer par la vérification de la conformité (QtTest) et le packaging d’une application et sa distribution.
Cette troisième édition prend en compte les nombreuses évolutions de Qt. L’auteur porte une attention particulière à Qt Quick avec un nouveau chapitre présentant le workflow de développement depuis l’intégration des interfaces graphiques avec Qt Design Studio jusqu'au développement avec Qt Creator. Vous découvrirez notamment la programmation en QML, les API Qt Quick, l’intégration avec le code C++ et les API dédiées aux plateformes mobiles (capteurs, positionnement, cartographie, Bluetooth, NFC et achats in-app).
En fin d’ouvrage, un nouveau chapitre présente en pratique le développement d’une application multiplateforme de A à Z avec Qt. 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.
Quizinclus dans
la version en ligne !
É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 vos connaissances sur 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) et bien d’autres pour terminer par la vérification de la conformité (QtTest) et le packaging d’une application et sa distribution.
Cette troisième édition prend en compte les nombreuses évolutions de Qt. L’auteur porte une attention particulière à Qt Quick avec un nouveau chapitre présentant le workflow de développement depuis l’intégration des interfaces graphiques avec Qt Design Studio jusqu'au développement avec Qt Creator. Vous découvrirez notamment la programmation en QML, les API Qt Quick, l’intégration avec le code C++ et les API dédiées aux plateformes mobiles (capteurs, positionnement, cartographie, Bluetooth, NFC et achats in-app).
En fin d’ouvrage, un nouveau chapitre présente en pratique le développement d’une application multiplateforme de A à Z avec Qt. 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.
Quizinclus dans
la version en ligne !
- Testez vos connaissances à l'issue de chaque chapitre
- Validez vos acquis
Téléchargements
Introduction
- 1. Objectifs et méthode
- 2. Glossaire
- 3. Qt, qu'est-ce ?
- 3.1 Histoire
- 3.2 Produits et licences
- 3.3 Compatibilité
- 3.4 Notoriété
- 3.5 Bibliothèque ou framework ?
- 3.6 Documentation
- 4. Connaissances requises
- 4.1 UML
- 4.2 Patrons de conception
- 4.3 C++
- 4.4 JavaScript
- 5. Que peut-on faire avec Qt ?
- 5.1 Le modèle d’abstraction
- 5.2 Les modules de Qt
- 5.3 Applications pour PC
- 5.4 Applications mobiles
- 5.5 Applications serveur et web services
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
- 2.3 La notion de kit dans Qt
- 3. Choisir son compilateur
- 3.1 Mono-plateforme ou multi-plateforme ?
- 3.2 Maintenabilité du code
- 4. Installer l'environnement de développement
- 4.1 Ordinateur personnel Mac Mx
- 4.2 Ordinateur personnel sous Windows
- 4.3 Mini ordinateur Raspberry Pi 4B
- 4.4 Tablette Android
- 4.5 Première installation
- 4.6 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.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
Les fondations de Qt
- 1. Objectifs
- 2. Les Types Qt
- 3. La classe QObject
- 3.1 Entité et identité
- 3.2 Thread principal
- 3.3 Affinité de thread
- 3.4 Signaux et slots
- 3.4.1 Le signal
- 3.4.2 Le slot
- 3.4.3 La connexion
- 3.4.4 Différents types de connexion
- 3.4.5 L'appel
- 3.4.6 Clés de compréhension
- 3.5 Arbre d’objets
- 3.6 Timers
- 3.7 Traduction
- 3.8 Propriétés dynamiques
- 4.1 Généralités
- 4.2 Prototype
- 4.3 Conversion de types
- 5.1 Comptage de références
- 5.2 Partage implicite
- 5.3 Partage explicite
- 7.1 bool *ok = 0
- 7.2 error()
- 8.1 Pourquoi Qt est-il orienté événements ?
- 8.2 La notion de flux
- 8.3 La run-loop
- 8.4 La programmation asynchrone
- 8.5 Appeler une fonction de façon asynchrone
- 8.5.1 L'émission de signaux
- 8.5.2 L'utilisation d'un timer
- 8.5.3 La fonction invokeMethod
- 8.9.1 Parcourir une longue liste
- 8.9.2 Faire une pause dans le programme
Anatomie d'une application
- 1. Objectifs
- 2. Application Widget ou Quick ?
- 2.1 Application Widget
- 2.2 Application Qt Quick
- 2.3 Synthèse
- 3. Exemples d’architectures classiques
- 3.1 Cartographie GPS
- 3.2 Gestion du stock
- 3.3 Tableau de bord de supervision
- 4. Service de flux vidéo pour une webcam
- 5. Description d’un projet Qt
- 5.1 Contenu d'un projet Qt
- 5.2 Création d'une application
- 5.2.1 En ligne de commande
- 5.2.2 Avec Qt Creator
- 5.3 Le fichier projet .pro
- 5.3.1 Les directives de projet
- 5.3.2 Les directives de chemins
- 5.3.3 Les directives de précompilation
- 6.1 La phase de compilation
Qt Core
- 1. Objectifs
- 2. Intégration et interactions
- 3. Découverte de Qt Core
- 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.1 Paralléliser des tâches
- 4.2 Synchronisation par blocage et protection
- 4.3 Synchronisation par notification
- 5.1 Structures unidimensionnelles
- 5.2 Structures multidimensionnelles
- 5.3 Rechercher les performances
- 6.1 Instanciation
- 6.2 Utilisation d’un pointeur existant
- 6.3 Rechercher des sous-ensembles
- 6.4 Convertir un QByteArray
- 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.1 Exécuter une commande externe
- 9.2 Les fichiers
- 10.1 QSettings
- 10.2 Une classe propriétaire
- 11.1 Mécanismes
- 11.2 Exemples
- 12.1 Écrire dans un fichier XML
- 12.2 Lire un fichier XML
- 13.1 Lire un fichier JSON
- 13.2 Écrire dans un fichier JSON
- 14.1 Automate simple
- 14.2 Collaboration entre automates
- 14.3 Automate fini
- 14.4 Animer les changements de propriétés
- 15.1 Conversion d’endianisme
- 15.2 Types universels
- 15.3 Fonctions globales
- 15.3.1 Mathématiques
- 15.3.2 Utilitaires
Qt Network
- 1. Objectifs
- 2. Intégration
- 3. Accéder au réseau
- 3.1 Portée de Qt Network
- 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.1 Client TCP
- 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.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.1 Client simple
- 5.2.2 Client évolué
- 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
- 7.1 Vocabulaire
- 7.2 Mise en œuvre
- 8.1 Connexion point à point
Qt Sql
- 1. Objectifs
- 2. Intégration
- 3. Persistance des données
- 3.1 Utilisation d'un serveur de données
- 3.2 Ce que Qt Sql 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
Qt Gui
- 1. Objectifs
- 2. Intégration
- 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
Qt Widgets
- 1. Objectifs
- 2. Intégration
- 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
- 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
- 17.1 Initialisation des widgets
- 17.2 Mise en place du drag
- 17.3 Mise en place du drop
Qt Quick
- 1. Objectifs
- 2. Intégration
- 3. La terminologie de Qt Quick
- 4. Le modèle objet de Qt Quick
- 5. Le document QML
- 5.1 La déclaration pragma (optionnelle)
- 5.2 Les imports
- 5.3 L’objet racine
- 5.4 Les propriétés
- 5.4.1 Les propriétés attachées
- 5.4.2 Les propriétés par défaut
- 5.4.3 Les propriétés obligatoires
- 5.5 Les signaux
- 5.6 Les slots
- 5.7 Les fonctions JavaScript en ligne
- 5.8 Les fichiers JavaScript
- 5.9 Les objets enfants
- 7.1 Le positionnement absolu
- 7.2 Les layouts
- 7.3 Les positionneurs
- 7.4 Les ancres
- 10.1 Animations
- 13.1 Le style « basique »
- 13.2 Le style « Fusion »
- 13.3 Le style « Imagine »
- 13.4 Le style « macOS »
- 13.5 Le style « Material »
- 13.6 Le style « Universal »
- 13.7 Le style « Windows »
- 13.8 Utiliser un style
- 13.8.1 À la compilation
- 13.8.2 Pendant l’exécution
- 16.1 Les propriétés du Type global Qt
- 16.2 Les fonctions du type global Qt
- 16.3 Le Type QML Application
- 18.1 Exposer des classes C++ en QML
- 18.1.1 Méthodes alternatives
- 19.1 Le Type QML Settings
- 19.2 Le Type LocalStorage
- 20.1 Utiliser des composants QML distants
- 20.2 Effectuer des requêtes HTTP
- 20.3 Charger des fichiers locaux
- 20.4 Utiliser les WebSockets
- 22.1 Découverte de l’interface
- 22.2 Création d’un projet
- 22.2.1 Les composants invisibles
- 22.2.2 Les données
- 24.1 Le contrôleur
- 24.2 Réaction aux événements
- 24.3 Déclenchement des actions
- 24.4 Conception rapide d’une application
- 24.4.1 Définir un flux applicatif
- 24.4.2 Appliquer des effets aux transitions
- 24.4.3 Personnaliser les courbes de progression
- 24.4.4 Établir des conditions dans les transitions
- 24.4.5 Changer l’état d’un composant
Qt Multimedia
- 1. Objectifs
- 2. Intégration
- 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
Les modules graphiques et web
- 1. Objectifs
- 2. Qt Svg
- 2.1 Intégration
- 2.2 Rendu et affichage
- 2.3 Exporter au format SVG
- 3. QtPrintSupport
- 3.1 Intégration
- 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
- 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
API pour les plateformes mobiles
- 1. Objectifs
- 2. Intégration
- 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’usage
- 6.1.1 Position courante en C++
- 6.1.2 Position courante en QML
- 6.1 Cas d’usage
- 7.1 Cartes et navigation
- 7.1.1 Afficher un plan en QML
- 7.1.2 Changer le type de carte
- 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.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.1 Cas d’utilisation
- 9.1.1 Recevoir des tags NFC
- 9.1.2 Envoyer un message
- 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
Qt Test - qualité du code
- 1. Objectifs
- 2. Intégration
- 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
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
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 spécifique à 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.1 Bundle
- 6.2 Fichier DMG
- 6.3 Paquet d'installation
- 7.1 Arborescence
- 7.2 Fichier de contrôle
- 7.3 Création du paquet
- 8.1 Windows
- 8.2 OS X
- 8.3 GNU/Linux
Application de A à Z
- 1. Objectifs
- 2. Analyse du besoin
- 3. Analyse technique
- 4. Codage
- 4.1 Les tests unitaires
- 4.2 Les classes C++
- 4.2.1 Le format de message
- 4.2.2 La classe Message
- 4.2.3 L’outillage de formatage des messages
- 4.2.4 La fabrique à messages
- 4.2.5 Le Contrôleur réseau
- 4.2.6 Exposition du Contrôleur en QML
- 4.3 Les fichiers QML
- 4.3.1 Le point d’entrée App.qml
- 4.3.2 La Vue de chat
- 4.3.3 La Vue des participants
- 5.1 Les tests unitaires (suite)
- 6.1 Smartphone iOS
- 6.2 Smartphone Android
- 6.3 Tests finaux
- 7.1 Préparation de l’application
- 7.2 Création du projet d’installeur
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.1 Pointeurs et 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.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
- 5.1 Types primitifs
- 5.2 Gestion de la mémoire
- 5.2.1 Cycle de vie
- 5.2.2 Structures de données
Tristan ISRAËL
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 architecte et expert en génie logiciel, il apporte son expertise à de grands acteurs de l’industrie de pointe pour l’amélioration de la qualité et de la sécurité de leurs systèmes d’information. Au travers de formations professionnelles sur Qt qu’il dispense au sein du programme CapTronic de Jessica France (CEA et BPI France), il aide les professionnels à acquérir les connaissances nécessaires à la réalisation de produits industriels de qualité. Titulaire des certifications Qt Digia, il partage dans les pages de ce livre 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.
En savoir plus