2009-08-09 4 views
26

Je suis intéressé à apprendre Qt. Je suis assez bon avec C++, STL et Boost. J'aime beaucoup le style STL/Boost, et je les utilise en C++ chaque fois que je le peux dans un projet uni. Cependant, l'interface graphique me manque toujours. Il semble que Qt est la meilleure solution dans mon cas. Qt a une bonne collection de conteneurs, mais je suis très familier avec les choses STL/Boost.Est-ce que Qt fonctionne bien avec STL & Boost?

Que devrais-je prendre en compte lors de l'apprentissage de Qt et de son utilisation côte à côte avec STL/Boost?

Répondre

32

Oui, Qt fonctionne parfaitement avec Boost et STL. La plupart des fonctionnalités STL sont dupliquées dans Qt pour garantir que ces fonctionnalités sont prises en charge sur toutes les plates-formes prenant en charge Qt. Cependant, rien ne vous interdit d'utiliser des équivalents STL/boost des constructions Qt ou des fonctionnalités que Qt ne possède pas.

Bien que Qt possède ses propres objets chaîne, conteneur et algorithme, il contient également de nombreuses fonctions de compatibilité avec STL. Par exemple, un QString peut être converti en une chaîne std :: string et un QVector peut être utilisé avec std :: for_each. Qt contient également des fonctionnalités qui se chevauchent avec boost comme QPointer (compare/contraste avec std: auto_ptr et boost: shared_ptr).

L'article Creating Custom Qt Types peut fournir des indications sur l'utilisation de fonctions avancées avec des objets boost tels que transmitting custom objects between threads with queued connections.

Voir aussi:

11

Qt ne fonctionne assez bien aux côtés de STL, bien que, comme tout cadre qu'ils ont dû remplacer certaines structures STL par nécessité (le un seul que vous vous trouvez obligé d'utiliser est string/unicode). Tout ce que Boost fonctionne fonctionne bien - en fait c'est une super paire de toolkits à utiliser ensemble, mais vous devez faire attention avec boost :: signals, car Qt a aussi une implémentation de signaux et les noms peuvent se chevaucher. Boost couvre ceci dans un FAQ et il y a aussi quelques informations sur le site trolltech pour savoir comment éviter le problème.

+2

La documentation de Qt aborde également le problème de signal/slots ici: http://doc.trolltech.com/4.5/signalsandslots.html#using-qt-with-3rd-party-signals-and-slots –