• Aide
  • Eurêkoi Eurêkoi

Livre

Maîtrisez Qt : guide de développement d'applications professionnelles

Résumé

Manuel pour concevoir et développer des applications avec cet outil de développement logiciel. Avec des fichiers complémentaires à télécharger et un accès gratuit à la version numérique. ©Electre 2022


  • Éditeur(s)
  • Date
    • C 2022
  • Notes
    • La couv.porte en plus : "En tékéchargement : code source des exemples" ; "Version en ligne offerte ! pendant 1 an" ; "+ quiz"
    • La 4e de couv. de couv. indique : "Sur www.editions-eni.fr : code source d'exemples autour des différents modules Qt"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (842 p.) : ill. ; 22 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-03796-2
  • Indice
  • Quatrième de couverture
    • Maîtrisez Qt

      Guide de développement d'applications professionnelles

      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.


  • Tables des matières
      • Maîtrisez Qt

      • Guide de développement d'applications professionnelles

      • Édition Eni

      • Avant-propos
      • Chapitre 1
      • Introduction
      • 1. Objectifs et méthode23
      • 2. Glossaire25
      • 3. Qt, qu'est-ce ?28
      • 3.1 Histoire29
      • 3.2 Produits et licences31
      • 3.3 Compatibilité32
      • 3.4 Notoriété33
      • 3.5 Bibliothèque ou framework ?33
      • 3.6 Documentation34
      • 4. Connaissances requises35
      • 4.1 UML35
      • 4.2 Patrons de conception35
      • 4.3 C++36
      • 4.4 JavaScript37
      • 5. Que peut-on faire avec Qt ?37
      • 5.1 Le modèle d'abstraction38
      • 5.2 Les modules de Qt40
      • 5.3 Applications pour PC44
      • 5.4 Applications mobiles44
      • 5.5 Applications serveur et web services45
      • Chapitre 2
      • L'environnement de développement
      • 1. Objectifs47
      • 2. Licence commerciale ou libre ?47
      • 2.1 Propriété intellectuelle et GPL50
      • 2.2 Diffusion de l'application51
      • 2.3 La notion de kit dans Qt52
      • 3. Choisir son compilateur53
      • 3.1 Mono-plateforme ou multi-plateforme ?53
      • 3.2 Maintenabilité du code56
      • 4. Installer l'environnement de développement57
      • 4.1 Ordinateur personnel Mac Mx58
      • 4.2 Ordinateur personnel sous Windows59
      • 4.3 Mini ordinateur Raspberry Pi 4B59
      • 4.4 Tablette Android60
      • 4.5 Première installation60
      • 4.6 Intégrer un autre environnement de compilation69
      • 5. Maintenir à jour son environnement73
      • 5.1 Profiter des dernières nouveautés76
      • 5.2 Gérer le cycle de vie de son application78
      • 6. Utiliser Qt Creator79
      • 6.1 Organisation des projets79
      • 6.2 Fenêtre principale80
      • 6.2.1 Boutons d'accès aux modules81
      • 6.2.2 Boutons de compilation et d'exécution81
      • 6.2.3 Onglets de journaux82
      • 6.3 Module d'édition87
      • 6.4 Module de conception d'interfaces graphiques88
      • 6.5 Module de débogage89
      • 6.6 Module de configuration de projet91
      • 6.7 Module de profilage96
      • 7. Créer une application96
      • 8. Création et gestion des ressources101
      • Chapitre 3
      • Les fondations de Qt
      • 1. Objectifs107
      • 2. Les Types Qt107
      • 3. La classe QObject109
      • 3.1 Entité et identité109
      • 3.2 Thread principal111
      • 3.3 Affinité de thread112
      • 3.4 Signaux et slots116
      • 3.4.1 Le signal118
      • 3.4.2 Le slot118
      • 3.4.3 La connexion119
      • 3.4.4 Différents types de connexion122
      • 3.4.5 L'appel125
      • 3.4.6 Clés de compréhension128
      • 3.5 Arbre d'objets136
      • 3.6 Timers139
      • 3.7 Traduction140
      • 3.8 Propriétés dynamiques140
      • 4. Héritage141
      • 4.1 Généralités142
      • 4.2 Prototype143
      • 4.3 Conversion de types144
      • 5. Optimisation des conteneurs145
      • 5.1 Comptage de références147
      • 5.2 Partage implicite151
      • 5.3 Partage explicite152
      • 6. La classe QVariant154
      • 7. Gestion des erreurs156
      • 7.1 bool *ok = 0156
      • 7.2 error()157
      • 8. Le modèle event-driven157
      • 8.1 Pourquoi Qt est-il orienté événements ?158
      • 8.2 La notion de flux160
      • 8.3 La run-loop164
      • 8.4 La programmation asynchrone167
      • 8.5 Appeler une fonction de façon asynchrone169
      • 8.5.1 L'émission de signaux171
      • 8.5.2 L'utilisation d'un timer171
      • 8.5.3 La fonction invokeMethod172
      • 8.6 Suppression explicite174
      • 8.7 Avantages et inconvénients175
      • 8.8 Gestion des ressources et performances176
      • 8.9 Rendre ses algorithmes non bloquants177
      • 8.9.1 Parcourir une longue liste177
      • 8.9.2 Faire une pause dans le programme180
      • 8.10 Faire dialoguer des objets181
      • 9. Les ressources187
      • 10. Les propriétés188
      • Chapitre 4
      • Anatomie d'une application
      • 1. Objectifs193
      • 2. Application Widget ou Quick ?194
      • 2.1 Application Widget194
      • 2.2 Application Qt Quick195
      • 2.3 Synthèse196
      • 3. Exemples d'architectures classiques :197
      • 3.1 Cartographie GPS197
      • 3.2 Gestion du stock200
      • 3.3 Tableau de bord de supervision202
      • 4. Service de flux vidéo pour une webcam204
      • 5. Description d'un projet Qt205
      • 5.1 Contenu d'un projet Qt205
      • 5.2 Création d'une application206
      • 5.2.1 En ligne de commande206
      • 5.2.2 Avec Qt Creator210
      • 5.3 Le fichier projet .pro210
      • 5.3.1 Les directives de projet211
      • 5.3.2 Les directives de chemins211
      • 5.3.3 Les directives de précompilation212
      • 6. Les commandes du toolkit213
      • 6.1 La phase de compilation .214
      • Chapitre 5
      • Qt Core
      • 1. Objectifs215
      • 2. Intégration et interactions215
      • 3. Découverte de Qt Core216
      • 3.1 Le méta-objet216
      • 3.2 Introspection218
      • 3.3 Le méta-type218
      • 3.4 Instanciation dynamique219
      • 4. Créer et piloter des threads220
      • 4.1 Paralléliser des tâches220
      • 4.1.1 Les threads pilotés221
      • 4.1.2 Un exemple223
      • 4.1.3 Les tâches simples226
      • 4.1.4 Lancer une tâche asynchrone229
      • 4.2 Synchronisation par blocage et protection230
      • 4.3 Synchronisation par notification233
      • 5. Les structures de données235
      • 5.1 Structures unidimensionnelles235
      • 5.2 Structures multidimensionnelles240
      • 5.3 Rechercher les performances242
      • 6. QByteArray243
      • 6.1 Instanciation244
      • 6.2 Utilisation d'un pointeur existant244
      • 6.3 Rechercher des sous-ensembles245
      • 6.4 Convertir un QByteArray246
      • 7. QBuffer247
      • 8. QString248
      • 8.1 Les chaînes C et les langues accentuées249
      • 8.2 Les normes ISO, Unicode, UCS249
      • 8.3 Échanger des données252
      • 8.4 Composer des chaînes254
      • 8.5 Listes de chaînes de caractères254
      • 8.6 Découper des chaînes de caractères256
      • 8.7 Extraire une sous-chaîne256
      • 8.8 Rechercher une sous-chaîne257
      • 8.9 Construire une chaîne à partir d'un nombre257
      • 8.10 Convertir une chaîne en nombre258
      • 8.11 Connaître la taille de la chaîne258
      • 9. Interactions avec le système d'exploitation259
      • 9.1 Exécuter une commande externe259
      • 9.2 Les fichiers261
      • 10. La gestion des paramètres263
      • 10.1 QSettings263
      • 10.2 Une classe propriétaire265
      • 11. La sérialisation266
      • 11.1 Mécanismes266
      • 11.2 Exemples269
      • 12. Les fichiers XML270
      • 12.1 Écrire dans un fichier XML270
      • 12.2 Lire un fichier XML272
      • 13. Les fichiers JSON274
      • 13.1 Lire un fichier JSON274
      • 13.2 Écrire dans un fichier JSON276
      • 14. Automate à états278
      • 14.1 Automate simple278
      • 14.2 Collaboration entre automates281
      • 14.3 Automate fini283
      • 14.4 Animer les changements de propriétés283
      • 15. Fonctions et types globaux284
      • 15.1 Conversion d'endianisme284
      • 15.2 Types universels286
      • 15.3 Fonctions globales286
      • 15.3.1 Mathématiques287
      • 15.3.2 Utilitaires287
      • 15.4 Macros288
      • 15.5 Fonctions mathématiques avancées289
      • Chapitre 6
      • Qt Network
      • 1. Objectifs291
      • 2. Intégration291
      • 3. Accéder au réseau292
      • 3.1 Portée de Qt Network292
      • 3.2 Appel bloquant vs non bloquant293
      • 4. Sockets295
      • 4.1 Client TCP295
      • 4.1.1 Connexion avec un hôte296
      • 4.1.2 Envoi d'une requête297
      • 4.1.3 Lecture d'une réponse297
      • 4.1.4 Fermeture et nettoyage298
      • 4.2 Serveur TCP300
      • 4.3 Client UDP302
      • 4.3.1 Connexion à un hôte302
      • 4.3.2 Envoi de données304
      • 4.3.3 Lecture des données304
      • 4.3.4 Fermeture de la connexion305
      • 5. Internet305
      • 5.1 Résolution DNS305
      • 5.1.1 Résoudre un nom de machine306
      • 5.1.2 Obtenir les enregistrements d'un nom de domaine307
      • 5.2 Échange de fichiers avec FTP309
      • 5.2.1 Client simple310
      • 5.2.2 Client évolué312
      • 5.3 Connexion à un serveur HTTP314
      • 5.3.1 Création d'une requête315
      • 5.3.2 Exécution de la requête316
      • 5.3.3 Lecture du résultat r316
      • 5.3.4 Authentification319
      • 5.4 Le chiffrement avec SSL et TLS321
      • 6. Les interfaces réseau323
      • 7. Les objets distants324
      • 7.1 Vocabulaire325
      • 7.2 Mise en ouvre325
      • 8. Mécanismes communs326
      • 8.1 Connexion point à point328
      • 9. Connexion via un concentrateur333
      • 10. Communications TCP334
      • 11. Versions du protocole335
      • 12. Objets distants en QML335
      • Chapitre 7
      • Qt Sql
      • 1. Objectifs337
      • 2. Intégration338
      • 3. Persistance des données338
      • 3.1 Utilisation d'un serveur de données338
      • 3.2 Ce que Qt Sql permet et ne permet pas339
      • 3.3 Le modèle de conception approprié339
      • 4. Connexion au serveur de données342
      • 5. Effectuer une requête343
      • 5.1 La requête344
      • 5.2 Le résultat345
      • 5.3 Le mode transactionnel346
      • 5.4 Obtenir les métadonnées347
      • 5.5 Rechercher les performances348
      • 5.5.1 Préparation de la requête350
      • 5.5.2 Exécution de la requête351
      • 5.5.3 Stratégie d'instanciation352
      • Chapitre 8
      • Qt Gui
      • 1. Objectifs353
      • 2. Intégration354
      • 3. QGuiApplication et QWindow354
      • 3.1 QGuiApplication354
      • 3.2 QWindow355
      • 4. Rendu 2D356
      • 4.1 Géométrie et positionnement357
      • 4.2 Images358
      • 4.2.1 QImage358
      • 4.2.2 QPixmap360
      • 4.3 Dessin 2D361
      • 4.3.1 Dessiner des formes362
      • 4.3.2 Dessiner du texte364
      • 5. Rendu 3D365
      • Chapitre 9
      • Qt Widgets
      • 1. Objectifs367
      • 2. Intégration368
      • 3. Flux d'application et de GUI369
      • 4. Modèle objet et Vue-Modèle371
      • 4.1 Vue-Modèle372
      • 4.2 Architecture du code380
      • 5. Créer avec Qt Designer381
      • 5.1 Organisation du designer384
      • 5.2 Mise en page385
      • 5.2.1 Ergonomie385
      • 5.2.2 Redimensionnement automatique386
      • 5.2.3 Une mise en page plus complexe398
      • 5.2.4 Modèle objet et relations405
      • 6. Créer « à la main »405
      • 7. Modes SDI et MDI407
      • 8. Créer un menu412
      • 9. Réagir aux événements414
      • 10. Intégrer et afficher les dialogues créés417
      • 11. Feuilles de style419
      • 12. Gestion des événements423
      • 13. Ressources426
      • 13.1 Créer un fichier de ressources427
      • 13.2 Utiliser une ressource dans le designer428
      • 13.3 Accéder à une ressource depuis le code429
      • 14. Widgets personnalisés430
      • 15. Icône de notification (Tray icon)433
      • 16. Composants graphiques 2D437
      • 17. Drag and Drop440
      • 17.1 Initialisation des widgets441
      • 17.2 Mise en place du drag442
      • 17.3 Mise en place du drop444
      • 18. Copier-coller445
      • 19. Ouvrir et enregistrer des fichiers446
      • 20. Généraliser les styles448
      • Chapitre 10
      • Qt Quick
      • 1. Objectifs449
      • 2. Intégration450
      • 3. La terminologie de Qt Quick451
      • 4. Le modèle objet de Qt Quick452
      • 5. Le document QML453
      • 5.1 La déclaration pragma (optionnelle)455
      • 5.2 Les imports455
      • 5.3 L'objet racine456
      • 5.4 Les propriétés457
      • 5.4.1 Les propriétés attachées459
      • 5.4.2 Les propriétés par défaut460
      • 5.4.3 Les propriétés obligatoires462
      • 5.5 Les signaux462
      • 5.6 Les slots463
      • 5.7 Les fonctions JavaScript en ligne465
      • 5.8 Les fichiers JavaScript465
      • 5.9 Les objets enfants466
      • 6. Structure d'un projet Qt Quick467
      • 7. Mettre en forme une scène469
      • 7.1 Le positionnement absolu471
      • 7.2 Les layouts473
      • 7.3 Les positionneurs475
      • 7.4 Les ancres476
      • 8. Vue et contrôleur482
      • 9. États et transitions484
      • 10. Animations et effets486
      • 10.1 Animations488
      • 11. Dessin 2D avec le Canvas491
      • 12. Contrôles riches495
      • 13. Utiliser les styles graphiques498
      • 13.1 Le style « basique »499
      • 13.2 Le style « Fusion »500
      • 13.3 Le style « Imagine »500
      • 13.4 Le style « macOS »501
      • 13.5 Le style « Material »502
      • 13.6 Le style « Universal »502
      • 13.7 Le style « Windows »503
      • 13.8 Utiliser un style504
      • 13.8.1 À la compilation504
      • 13.8.2 Pendant l'exécution504
      • 14. Formes graphiques505
      • 15. Effets graphiques505
      • 16. Types globaux de Qt Quick509
      • 16.1 Les propriétés du Type global Qt512
      • 16.2 Les fonctions du type global Qt513
      • 16.3 Le Type QML Application515
      • 17. Créer ses propres Types QML517
      • 18. L'intégration avec C++520
      • 18.1 Exposer des classes C+ + en QML521
      • 18.1.1 Méthodes alternatives528
      • 18.2 Propriété des objets530
      • 18.3 Intégrer des bibliothèques externes531
      • 19. Stocker des données535
      • 19.1 Le Type QML Settings535
      • 19.2 Le Type LocalStorage537
      • 20. Créer des requêtes réseau539
      • 20.1 Utiliser des composants QML distants539
      • 20.2 Effectuer des requêtes HTTP541
      • 20.3 Charger des fichiers locaux542
      • 20.4 Utiliser les WebSockets542
      • 21. Autres API544
      • 22. Qt Design Studio544
      • 22.1 Découverte de l'interface546
      • 22.2 Création d'un projet548
      • 22.2.1 Les composants invisibles556
      • 22.2.2 Les données556
      • 23. Convertir un projet d'interface graphique en application558
      • 24. Créer les contrôleurs et tester l'application559
      • 24.1 Le contrôleur559
      • 24.2 Réaction aux événements563
      • 24.3 Déclenchement des actions565
      • 24.4 Conception rapide d'une application567
      • 24.4.1 Définir un flux applicatif567
      • 24.4.2 Appliquer des effets aux transitions.573
      • 24.4.3 Personnaliser les courbes de progression575
      • 24.4.4 Établir des conditions dans les transitions577
      • 24.4.5 Changer l'état d'un composant578
      • 24.5 Conception d'animations579
      • Chapitre 11
      • Qt Multimedia
      • 1. Objectifs585
      • 2. Intégration586
      • 3. Audio586
      • 3.1 Lister les périphériques586
      • 3.2 Enregistrer du son588
      • 3.3 Lire un fichier589
      • 4. Vidéo591
      • 4.1 Enregistrer une vidéo591
      • 4.2 Lire une vidéo592
      • 5. Caméra593
      • 5.1 Afficher en direct593
      • 5.2 Enregistrer en direct594
      • 6. Radio595
      • 6.1 Lire un flux radio596
      • 6.2 Enregistrer un flux radio598
      • Chapitre 12
      • Les modules graphiques et web
      • 1. Objectifs599
      • 2. Qt Svg599
      • 2.1 Intégration599
      • 2.2 Rendu et affichage600
      • 2.3 Exporter au format SVG600
      • 3. QtPrintSupport602
      • 3.1 Intégration602
      • 3.2 Choisir l'imprimante602
      • 3.3 Imprimer un dessin603
      • 3.4 Imprimer un widget605
      • 3.5 Imprimer du texte605
      • 4. QtWebkitWidgets606
      • 4.1 Intégration606
      • 4.2 Afficher une page web606
      • 4.3 Accéder au DOM608
      • 4.4 Bases de données HTML 5611
      • 5. Qt Charts612
      • 5.1 Installation612
      • 5.2 Licences612
      • 5.3 Intégration613
      • 5.4 Présentation613
      • 5.5 Principe général613
      • 5.6 Créer un diagramme en C + +614
      • 5.7 Créer un diagramme en QML615
      • 5.8 Diagramme à barres616
      • 5.8.1 C+ +616
      • 5.8.2 QML616
      • 5.8.3 Variantes617
      • 5.9 Diagramme circulaire619
      • 5.9.1 C+ +619
      • 5.9.2 QML620
      • 5.9.3 Variantes620
      • 5.10 Diagramme à lignes621
      • 5.10.1 C + +621
      • 5.10.2 QML622
      • 5.11 Diagramme à surface622
      • 5.11.1 C + +623
      • 5.11.2 QML624
      • 5.12 Diagramme à points624
      • 5.12.1 C + +625
      • 5.12.2 QML625
      • 5.13 Diagramme à chandelles626
      • 5.13.1 C+ +626
      • 5.13.2 QML627
      • 5.14 Combiner les diagrammes628
      • 5.15 Modifier la légende629
      • 5.16 Manipuler les axes630
      • 5.17 Utiliser des thèmes de couleurs631
      • 5.18 Interagir avec un diagramme632
      • Chapitre 13
      • API pour les plateformes mobiles
      • 1. Objectifs635
      • 2. Intégration635
      • 3. L'environnement de développement636
      • 3.1 Préparation636
      • 3.2 Configuration637
      • 4. Exécution d'une application639
      • 5. Capteurs645
      • 5.1 Utilisation générique646
      • 5.2 Obtenir la liste des capteurs disponibles647
      • 5.3 Lire les valeurs d'un capteur648
      • 5.4 Lecture asynchrone649
      • 5.5 Filtrer les données649
      • 6. Positionnement650
      • 6.1 Cas d'usage651
      • 6.1.1 Position courante en C+ +651
      • 6.1.2 Position courante en QML652
      • 7. Cartographie653
      • 7.1 Cartes et navigation654
      • 7.1.1 Afficher un plan en QML654
      • 7.1.2 Changer le type de carte657
      • 7.2 Lieux et points d'intérêt659
      • 7.2.1 Afficher la position courante659
      • 7.2.2 Utiliser une adresse postale659
      • 7.2.3 Mettre en évidence un point d'intérêt661
      • 7.2.4 Calculer un itinéraire663
      • 8. Bluetooth667
      • 8.1 Cas d'utilisation667
      • 8.1.1 Obtenir des informations sur le périphérique Bluetooth667
      • 8.1.2 Rechercher des appareils distants668
      • 8.1.3 Envoyer un fichier668
      • 8.1.4 Échanger en direct entre périphériques669
      • 8.1.5 Envoyer des notifications par Bluetooth LE672
      • 9. NFC673
      • 9.1 Cas d'utilisation673
      • 9.1.1 Recevoir des tags NFC673
      • 9.1.2 Envoyer un message675
      • 10. Achats in-app676
      • 10.1 Cas d'utilisation676
      • 10.1.1 Enregistrer des achats in-app676
      • 10.1.2 Effectuer un achat679
      • 10.1.3 Restaurer les achats précédents680
      • Chapitre 14
      • Qt Test - qualité du code
      • 1. Objectifs681
      • 2. Intégration682
      • 3. Scénario de tests682
      • 4. Tests unitaires et couverture de code685
      • 4.1 Les assertions686
      • 4.2 Exécution des tests687
      • 4.3 Diversifier les données689
      • 4.4 Événements GUI691
      • 4.5 Tester les performances693
      • 5. Non-régression694
      • Chapitre 15
      • Traduction d'une application
      • 1. Objectifs695
      • 2. Cycle de traduction695
      • 3. Rendre traduisible son application697
      • 3.1 Code source697
      • 3.2 Vues699
      • 4. Traduire son application700
      • 4.1 Langue et région700
      • 4.2 Traduction de l'application701
      • 4.2.1 Exportation des textes701
      • 4.2.2 Traduction des textes701
      • 4.2.3 Compilation des traductions704
      • 4.3 Intégration des traductions704
      • 5. Contexte de traduction706
      • Chapitre 16
      • Publication d'une application
      • 1. Objectifs707
      • 2. Comprendre les licences708
      • 3. Les dépendances710
      • 4. Créer un installeur universel711
      • 5. Créer un installeur spécifique à Windows712
      • 5.1 Programme compilé avec Microsoft Visual C+ +713
      • 5.2 Programme compilé avec mingw714
      • 6. Créer un installeur pour OS X714
      • 6.1 Bundle715
      • 6.1.1 Création715
      • 6.1.2 Signature716
      • 6.2 Fichier DMG717
      • 6.3 Paquet d'installation719
      • 7. Créer un paquet pour Debian/Ubuntu719
      • 7.1 Arborescence720
      • 7.2 Fichier de contrôle721
      • 7.3 Création du paquet722
      • 8. Inclure les plug-ins de Qt723
      • 8.1 Windows723
      • 8.2 OS X723
      • 8.3 GNU/Linux724
      • 9. Tester son application724
      • Chapitre 17
      • Application de A à Z
      • 1. Objectifs725
      • 2. Analyse du besoin726
      • 3. Analyse technique726
      • 4. Codage727
      • 4.1 Les tests unitaires728
      • 4.2 Les classes C++729
      • 4.2.1 Le format de message729
      • 4.2.2 La classe Message730
      • 4.2.3 L'outillage de formatage des messages732
      • 4.2.4 La fabrique à messages733
      • 4.2.5 Le Contrôleur réseau734
      • 4.2.6 Exposition du Contrôleur en QML738
      • 4.3 Les fichiers QML739
      • 4.3.1 Le point d'entrée App.qml739
      • 4.3.2 La Vue de chat740
      • 4.3.3 La Vue des participants743
      • 5. Traduction745
      • 5.1 Les tests unitaires (suite)748
      • 6. Compilation sur smartphone750
      • 6.1 Smartphone iOS750
      • 6.2 Smartphone Android753
      • 6.3 Tests finaux761
      • 7. Finalisation et empaquetage762
      • 7.1 Préparation de l'application764
      • 7.2 Création du projet d'installeur765
      • Chapitre 18
      • Techniques d'optimisation
      • 1. Objectifs767
      • 2. Langages et mode de pensée769
      • 3. Notions de C+ + indispensables772
      • 3.1 Pointeurs et références772
      • 3.1.1 Pointeurs C772
      • 3.1.2 Références774
      • 3.2 Copie d'objets776
      • 3.2.1 Copie superficielle (shallow copy)776
      • 3.2.2 Copie en profondeur (deep copy)778
      • 3.2.3 Copie paresseuse (lazy copy)780
      • 3.2.4 Partage implicite783
      • 4. Optimisations785
      • 4.1 Le modèle objet787
      • 4.2 Le cycle de vie des objets788
      • 4.3 Les classes optimisées791
      • 4.3.1 QByteArray791
      • 4.3.2 QStringRef793
      • 4.4 Optimiser l'utilisation du processeur795
      • 5. Quelques particularités de Qt797
      • 5.1 Types primitifs797
      • 5.2 Gestion de la mémoire798
      • 5.2.1 Cycle de vie798
      • 5.2.2 Structures de données799
      • 5.3 STL, Boost et Qt800
      • 5.4 Réentrance801
      • 5.5 Exceptions802
      • 6. Lectures complémentaires804
      • Index805

  • Origine de la notice:
    • Electre
  • Disponible - 681.229 ISR

    Niveau 3 - Informatique