Librairie C++ Qt5 et QML - Fonctionnalités avancées



Objectifs, programme, validation de la formation

Objectifs

Développer des applications pouvant tourner sur Windows, Mac OS, Linux, Android et les systèmes embarqués / temps réel.

Description, programmation

Rappels de Qt / QML
L’intégration entre C++ / Qt et QML / JavaScript et ses limites
La boucle d’évènement de Qt et son impact sur Qt Quick
Problèmes fréquemment rencontrés

QQmlListProperty
Threading
Types non reconnus...

Sujets avancés sur Qt Quick
Création de composants visuels en C++

Avec une base Qt Scene Graph : la solution idéale mais limitée
Avec une base QPainter : la solution de compatibilité
Le composant hybride C++ / QML : une solution largement répandue

Intégrer des images générées ou ne provenant pas d’un fichier local

Les "images provider"
Les composants spécialisés

Texture
Dessin procédural
FBO OpenGL...

Les moyens pour se passer de C++ dans certains cas

SVG généré à la volée
Canvas...

Optimisation des performances
Les pratiques permettant d’améliorer naturellement les performances du code

Le "proxying" des bindings pour éviter les goulets d’étranglement
L’utilisation de C++ à la place de JavaScript pour les traitements lourds
La résolution des noms en QML : l’épineux problème du "scoping"

Performances graphiques : éléments à prendre en compte

Les objets graphiques superflus
Les mauvaises utilisations dans les "delegates" d’une vue MVC
Les effets de bords des mauvaises utilisations de composants basiques

Image
Text...

Techniques pour rendre le code plus compréhensible
La programmation orientée flux de données

Différences avec l’orienté objet classique / naïf
Application des principes en QML et C++
Implications sur l’architecture globale

La séparation C++ / QML

Bien placer la séparation entre les deux langages
Eviter que le code QML soit pollué par de mauvaises utilisations de C++
Simplifier le code côté C++ pour qu’il ne soit pas un frein à son utilisation

Eviter les erreurs courantes

Rendre le code QML sémantiquement plus clair
Fuir les cas où JavaScript peut produire des erreurs silencieuses
Limiter au maximum la redondance dans le code, notamment entre C++ et QML

La création de composants personnalisés : l’importance du cloisonnement

Empêcher les bugs potentiels par intrusion externe dans le composant
Rendre un composant réellement réutilisable et portable pour un gain de temps
La spécialisation en cascade : un bon moyen de coder proprement et simplement avec QML

Questions restantes : une fois que la technique pure est réglée
Ces problématiques qui apparaissent en fin de projet, lorsque le produit doit être diffusé

La création de "vrais" modules de plug-ins QML
Le déploiement sur les plateformes sans système de package (Windows...)
La dynamique traduction de l’interface (Qt Linguist)

Certification (en option)

Nos tests de validation des compétences font partie intégrante du processus d’apprentissage car ils permettent de développer différents niveaux d’abstractions.
Solliciter l’apprenant à l’aide de nos QCM, c’est lui permettre d’étayer sa réflexion en mobilisant sa mémoire pour choisir la bonne réponse. Nous sommes bien dans une technique d’ancrage mémoriel.
L’examen sera passé à la fin de la formatio

Niveau de sortie information non communiquée

Métiers visés

M1805 :


Durée, rythme, financement

Durée 21 heures en centre

Modalités de l'alternance -

Conventionnement Non

Conditions d'accès

Modalités de recrutement et d'admission Avoir développé en C++. Avoir suivi la formation CPP-QT5IN "Librairie C++ Qt5 et QML - Initiation" ou connaître les bases de Qt Core, QML et Qt Quick.

Niveau d'entrée sans niveau spécifique

Conditions spécifiques et prérequis Aucune

Inscription

Contact renseignement RICHIR Agnès

Téléphone 0557190765


Éligibilité de cette formation au compte personnel de formation pour les salariés


Code CPF 237067 - Validité du 02/01/2019 au 31/12/2115


Périodes prévisibles de déroulement des sessions

Session débutant le : 06/07/2020

Adresse d'inscription
15 Bis Allée James Watt 33700 Mérignac

Lieu de formation


Organisme de formation responsable