2010-08-19 6 views
6

Une grande quantité de fonctionnalités est dupliquée entre C++ et Qt standard. À un moment donné, cela semble logique, mais à plusieurs reprises, cela semble stupide. Comme si j'avais envie de faire un nouveau langage de programmation, d'apprendre des choses que je connais déjà. par exemple. en utilisant QFile.Qt: classes Qt par rapport à la norme C++

Aussi si je le fais tout Qt moyen et supposons maintenant que je veux sortir du cadre Qt, il sera trop fastidieux de réécrire ce code. OTOH J'aime Qt car il me fournit des librairies que sinon je devrais me pêcher comme webkit, connectivité de base de données, dbus etc.

Que suggérez-vous de mélanger le standard C++ ou de le faire de manière pure Qt?

+0

Question légèrement connexe: http://stackoverflow.com/questions/1668259/stl-or-qt-containers –

Répondre

5

Comme il n'y a pas d'interface graphique en C++, vous devez extraire le code de l'interface graphique du reste du code réel. Puis, dans votre implémentation QT de votre abstraction graphique, n'hésitez pas à utiliser le code QT.
Vous pourrez également écrire une abstraction Wx/Quartz GUI sans affecter le code réel.

Dans le code réel (si le travail est terminé) s'en tenir à des choses standard (ou des bibliothèques multi-plateforme qui sont presque standard (boost)). On pourrait soutenir que QT est une plateforme croisée. Rappelez-vous simplement que l'utilisation d'une lib ici va étroitement coupler votre code à la lib, donc extraire cette dernière date sera non triviale. (Voir la question précédente sur la suppression de Rouge Wave d'une application héritée)

3

Je fais toutes les classes de collection dans std: c'est plus clair pour les développeurs non-Qt et plus portable.

Chaînes et listes de chaînes de caractères J'utilise les Qt dans une fonction purement Qt qui fait quelque chose de GUI-ish mais utilise autrement std :: String. Bien que la mise en forme Qt .arg() soit beaucoup plus agréable que la stringstream

+0

Les conteneurs fournis avec Qt ont une empreinte plus légère puisqu'ils effet de levier [partage implicite] (http://doc.qt.nokia.com/4.6/implicit-sharing.html), de plus ils fournissent [des itérateurs de style Java] (http://doc.qt.nokia.com/4.6 /containers.html#java-style-iterators). Donc je recommanderais de les utiliser à la place des STL. –

+0

il y a boost :: format qui fournit aussi un bon moyen de sortie. – rriemann