2008-12-11 2 views
65

Ich freue mich auf das Starten eines Projekts in C++ mit dem Qt 4 Framework (eine plattformübergreifende GUI ist erforderlich). Ich habe großartige Dinge über die Boost-Bibliotheken von Freunden und online gehört. Ich habe angefangen, beide zu lesen und wollte eine oberflächliche Frage stellen, bevor ich zu tief ging: Schließen sich diese beiden "Entwicklungssysteme" gegenseitig aus?Mischen von Qt und Boost

Meine erste Suche und Lesen zeigt eine gewisse Überlappung in der Signalverarbeitung, kundenspezifische Systeme bauen und anderen Low-Level-Primitive.

Macht es Sinn, beide im selben Projekt zu verwenden?

Antwort

55

Ja, es macht Sinn. Ich würde im Allgemeinen bevorzugen, die boost/stdlib-Funktionen wo möglich statt ihrer Qt-Alternativen zu verwenden.

Es erleichtert die Portierung des Codes auf das nächste Framework.
Es macht es für neue Nicht-Qt-Programmierer einfacher, auf Hochtouren zu kommen.
Boost hat einige großartige Funktionen und wird ständig erweitert.

Anmerkung: Strings zu/von Widgets sind wahrscheinlich die wichtigste Ausnahme - in der GUI würde ich Qt Strings verwenden verwirrend Abgüsse überall zu sparen.

+30

Qt hat auch große Funktionalität und wird auch immer mehr. Qt hat eine großartige (bessere) Dokumentation im Vergleich zu Boost (basierend auf meiner Erfahrung mit beiden). Man könnte argumentieren, dass die Verwendung von Boost es auch für Nicht-Boost-Programmierer schwieriger macht. – sivabudh

+12

True für Boost, aber ich würde immer noch std :: vector etc über Qt Sammlung Klassen –

7

Wir (Last.fm) verwenden sie beide zusammen, obwohl wir nur so zu tun, gerade erst begonnen und haben so nicht viel Erfahrung noch. Bis jetzt ist alles in Ordnung, obwohl :)

17

Vor allem, da Sie Cross-Plattform werden Sie eine gut geschichtete Architektur haben sollten, mit der Geschäftslogik und Datenzugriff so weit wie möglich von dem GUI entfernt. In diesem Fall wäre es sinnvoll, Boost zu verwenden, wenn Sie das Backend Ihrer Anwendung schreiben, und für das Frontend nur zu Qt springen, wobei der obligatorische Stapel von Abgüssen im Leim erfolgt.

Wenn Ihr „Motor“ von Ihrer GUI Wahl getrennt ist, können Sie für etwas anderes aus Qt tauschen in der Zukunft (native Bibliotheken vielleicht) mit minimalem Aufwand.

3

Es gibt mögliche Probleme bei der Verwendung von Boost.Signals neben QT. Diese sind in der Boost.Signals FAQ dokumentiert.

31

This paper vergleicht signal slots Mechanismus in QT und Boost::Signal sehr anständig. Es ist ein Muss für diejenigen, die ein bisschen neugierig auf diese Mischung sind.

+1

Gute Papier. Danke für den Link. – dwj