FAQ Qt
FAQ QtConsultez toutes les FAQ
Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 15 juin 2021
- Que faudrait-il connaître au minimum du C++ pour bien utiliser Qt ?
- Comment optimiser avant distribution ?
- 3.1. Mémoire (3)
- 3.2. Compilation
(10)
- Comment compiler des projets utilisant Qt ?
- Comment avoir des classes utilisant Q_OBJECT sans .h ?
- Comment compiler Qt ?
- Comment effectuer une compilation croisée de Qt ?
- Quand et comment réaliser une compilation "statique"?
- Comment utiliser une bibliothèque externe dans mon projet ?
- Quelles sont les dépendances de Qt ?
- Quels sont les compilateurs utilisables avec Qt ?
- Comment puis-je savoir dans le .pro si je compile en 32 ou 64 bits ?
- Comment compiler Qt en 64 bits sur une machine 32 bits ?
- 3.3. Systèmes supportés (2)
- 3.4. Modèle objet de Qt
(7)
- 3.4.1. QObject
(7)
- Un new sans delete ?
- Erreur d'édition des liens undefined reference to 'vtable for xxx' ?
- Allouer sur le tas ou sur la pile des QObject et dérivés ?
- Héritage multiple avec QObject ?
- Peut-on utiliser des pointeurs intelligents sans danger avec des QObject ?
- Comment faire un delete sur un QObject de manière sûre ?
- Un QObject en tant que membre d'une classe ?
- 3.4.1. QObject
(7)
- 3.5. Métaobjets (5)
Pour vous aider, voici un petit récapitulatif des notions importantes du C++ utilisées dans Qt. Bien sûr, tout ceci n'est qu'indicatif et peut être discuté.
- Programmation orientée objet en C++ (déclaration d'une classe ou structure, héritage, appel de fonction membre…).
- Différence entre mémoire statique et dynamique (connaître la durée de vie des objets instanciés et même mieux : la maîtriser).
- Polymorphisme et surcharge d'opérateur.
- Transtypage (transformation d'un pointeur sur QObject ou QWidget vers le type réel de l'objet).
- Templates (conteneurs de Qt, principalement).
- Anglais (pour parcourir la documentation officielle).
- Opérateurs binaires ~ ! | & (paramétrer certaines fonctionnalités grâce aux drapeaux, même si Qt fournit la classe QFlags pour simplifier ce traitement).
- Itérateurs, en C++ ou en Java (parcours avancé sur des éléments). Qt fournit la méthode foreach, qui évite l'utilisation des itérateurs, suffisante dans la plupart des cas.
Lien : Comment débuter en C++ ?
Lien : La meilleure fonctionnalité de C++ : la gestion du cycle de vie des objets et des variables
Avant de distribuer/déployer une application, il faut généralement l'optimiser. Une application plus rapide permet de :
- avoir un avantage sur les applications concurrentes (en particulier les applications Web) ;
- diminuer la consommation énergétique (ce qui est particulièrement important si Qt est utilisé sur un appareil mobile/portable).
La première étape pour optimiser est de faire tourner l'application dans un profiler. Un profiler établit des statistiques de l'utilisation du code et permet de trouver les branches et fonctions qui prennent le plus de temps à l'exécution. Il existe de nombreux profiler pour C++ : Valgrind avec callgrind (Linux), Intel VTune (Linux et Windows), Instruments (Xcode, macOS), Visual Studio Profiler (Windows).
La seconde étape est d'activer les optimisations à la compilation. Ces optimisations sont valables pour Qt comme pour l'application, il faut donc recompiler les deux et pas seulement l'application. Il faut recompiler en mode release pour exclure les symboles et le code de débogage (QDebug, Q_ASSERT) et activer les optimisations (option -O2). Si le compilateur le permet, l'utilisation de PGO (Profile-Guided Optimization) permet d'améliorer encore les performances.
Finalement, avec une licence commerciale ou pour un projet open source, compiler statiquement améliore aussi les performances.