Le principal avantage d’utiliser les signaux et slots de Qt est qu’il s’agit d’un mécanisme très bien intégré dans la plateforme, c’est déjà l’option de facilité quand on utilise Qt. Évidemment il est toujours possible de connecter un signal Qt (genre l’appui sur un bouton) à un slot Boost, mais c’est chiant (et ça rajoute une dépendance).
Se fader qmake pour une fonctionnalité de base
QMake est un gestionnaire de builds, qui appelle moc. C’est moc qui est chargé de créer le code C++ à partir des QObjects (pour les signaux, les propriétés, et toutes les extensions dynamiques de Qt au modèle objet de C++). Or moc est très bien intégré à tous les gestionnaires de build actuels, par exemple CMake.
le vrai avantage […] est ici une communication inter-thread
C’est thread-safe. Ça a été un des avantages de Qt sur les autres bibliothèques, mais Boost propose quelque chose de similaire maintenant.
qui n'était pas capable de vérifier la validité d'une connexion de manière statique
Un des nouveaux avantages de cette syntaxe dans Qt5 est de permettre d’avoir des fermetures anonymes comme slots. Le fait que la validation soit faite de manière dynamique est une propriété fondamentale du modèle QObject de Qt, qui inclu aussi les propriétés dynamiques qu’on peut rajouter aux QObjects. C’est par exemple utile pour scripter Qt, en particulier avec le nouveau QML, mais aussi avec tous les autres langages qui s’interfacent à Qt (Lua, Python, etc). Ça permet de découvrir à la volée les signaux et propriétés (introspection), de les scripter facilement ou de charger les connexions à la volée.
Ça permet par exemple d’écrire rapidement une connexion entre un signal Qt quelconque, et un callback en QML, directement dans du code C++, sans avoir à re-déclarer le QML dans le C++. La connexion étant évidemment vérifiée dynamiquement par Qt.
Je sais pas trop où en est Boost, mais en Qt on d’autres petites features comme la possibilité d’ignorer des arguments en passant d’un signal à un slot, la déconnexion automatique en cas de destruction des slots, la connexion automatiques de signaux et slots avec des noms qui vont bien ou la configuration de l’ordonnancement des signaux.
[^] # Re: Signaux / slot
Posté par neil . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 8. Dernière modification le 01 mars 2013 à 07:04.
Le principal avantage d’utiliser les signaux et slots de Qt est qu’il s’agit d’un mécanisme très bien intégré dans la plateforme, c’est déjà l’option de facilité quand on utilise Qt. Évidemment il est toujours possible de connecter un signal Qt (genre l’appui sur un bouton) à un slot Boost, mais c’est chiant (et ça rajoute une dépendance).
QMake est un gestionnaire de builds, qui appelle
moc. C’estmocqui est chargé de créer le code C++ à partir desQObjects (pour les signaux, les propriétés, et toutes les extensions dynamiques de Qt au modèle objet de C++). Ormocest très bien intégré à tous les gestionnaires de build actuels, par exemple CMake.C’est thread-safe. Ça a été un des avantages de Qt sur les autres bibliothèques, mais Boost propose quelque chose de similaire maintenant.
Un des nouveaux avantages de cette syntaxe dans Qt5 est de permettre d’avoir des fermetures anonymes comme slots. Le fait que la validation soit faite de manière dynamique est une propriété fondamentale du modèle QObject de Qt, qui inclu aussi les propriétés dynamiques qu’on peut rajouter aux QObjects. C’est par exemple utile pour scripter Qt, en particulier avec le nouveau QML, mais aussi avec tous les autres langages qui s’interfacent à Qt (Lua, Python, etc). Ça permet de découvrir à la volée les signaux et propriétés (introspection), de les scripter facilement ou de charger les connexions à la volée.
Ça permet par exemple d’écrire rapidement une connexion entre un signal Qt quelconque, et un callback en QML, directement dans du code C++, sans avoir à re-déclarer le QML dans le C++. La connexion étant évidemment vérifiée dynamiquement par Qt.
Je sais pas trop où en est Boost, mais en Qt on d’autres petites features comme la possibilité d’ignorer des arguments en passant d’un signal à un slot, la déconnexion automatique en cas de destruction des slots, la connexion automatiques de signaux et slots avec des noms qui vont bien ou la configuration de l’ordonnancement des signaux.