Je cherche à démarrer un projet en C++ en utilisant le framework Qt 4 (une interface graphique multiplateforme est requise). J'ai entendu beaucoup de choses sur les bibliothèques Boost d'amis et en ligne. J'ai commencé à lire sur les deux et je voulais poser une question rapide avant d'aller trop loin: ces deux "systèmes" de développement s'excluent-ils mutuellement?
Ma recherche et lecture initiales montrent un certain chevauchement dans la gestion du signal, les systèmes de construction personnalisés et d'autres primitives de bas niveau.
Est-il judicieux de les utiliser tous les deux dans le même projet?
Oui, c'est parfaitement logique. Je préfère généralement utiliser les fonctions boost/stdlib lorsque cela est possible plutôt que leurs alternatives Qt.
Il facilite le portage du code vers le prochain framework.
Il est plus facile pour les nouveaux programmeurs non-Qt de gagner en vitesse.
Boost a de très bonnes fonctionnalités et en gagne toujours plus.
remarque: les chaînes vers/depuis les widgets sont probablement la principale exception - à l'intérieur de l'interface graphique, j'utiliserais des chaînes Qt pour enregistrer les conversions déroutantes partout.
Cet article compare créneaux de signal mécanisme dans QT et Boost :: Signal très décemment. C'est une lecture incontournable pour ceux qui sont un peu curieux de ce mix.
D'autant plus que vous allez sur plusieurs plates-formes, vous devriez avoir une architecture bien en couches, avec la logique métier et l'accès aux données aussi supprimés que possible de l'interface graphique. Dans ce cas, il serait judicieux d'utiliser Boost lors de l'écriture du backend de votre application, et de ne passer qu'à Qt pour le frontend, avec la pile de transtypages obligatoires effectuée dans la colle.
Si votre "moteur" est distinct de votre choix d'interface graphique, vous pourrez échanger Qt pour quelque chose d'autre à l'avenir (bibliothèques natives peut-être) avec un minimum d'effort.
Nous (Last.fm) les utilisons tous les deux ensemble, même si nous venons juste de commencer à le faire, et n'avons donc pas encore beaucoup d'expérience. Jusqu'à présent, tout va bien :)
Il y a des problèmes potentiels avec l'utilisation de Boost.Signals avec QT. Ceux-ci sont documentés dans la Boost.Signals FAQ .
Considérez que Boost Signals2 sont disponibles, et ils sont thread-safe.