Qt oder STL



  • Hallo,

    Wieder so ein "Grundsatzlaberthema" - sorry, ich arbeite mich gerade in Qt etwas ein. Qt scheint sehr umfangreich zu sein. In manchen Situationen scheint es mir jedoch moeglich zu sein, entweder ueber Container der STL oder ueber Container der Qt eine Loesung zu finden.

    Ist das jeweils eine Fallentscheidung oder bevorzugt man moeglichst immer eher STL Container bzw. Qt? Welche Aspekte sprechen in solchen Faellen fuer STL und welche fuer Qt?

    Ich wollte fuer Fileoperationen zunaechst eigentlich die Boost Library etwas ausprobieren, nun erkenne ich, dass auch die Qt dafuer eigene Moeglichkeiten bereitstellt - sollte man also beim Arbeiten mit Qt hier auch moeglichst "alles Qt" machen (Stil?)? Macht es Sinn extra auf Boost auszuweichen oder ist das nur umstaendlich in diesem Fall?

    Danke im voraus 🙂



  • Qt sollte idealerweise nur die austauschbare Oberfläche (GUI) darstellen und vom inneren Programmablauf abtrennbar sein. Das spricht für STL. Wenn Dir das egal ist, kannst Du eher die Qt-Containerklassen verwenden. Dort findest Du nämlich Iteratoren im Java- und STL-Stil und sogar das Pseudoschlüsselwort "foreach" zum Iterieren.



  • Danke, es is also mehr eine individuelle Entscheidung. Ueber foreach() bin ich auch schon gestolpert, nja, ich finde es gerade bei den Filestreams vorteilhafter die aus der Qt mit den eigenen qint16, quint16, qint32, quint32, etc. Typen zu verwenden, weil es mir (zumindest jetzt noch am Anfang meiner Qt Erfahrung) schon einfacher erscheint den Code dann auch von Linux auf Windows zu uebertragen, etc, was imo ein grosser Vorteil der Qt auch ist.



  • Ich wuerde immer das hernehmen, was am bequemsten zum progen ist. Boost kenne ich ueberhaupt nicht, die STL nur wenig. Deswegen nehme ich bei meinen Programmen meistens Qt her..

    Aber bedenke, dass du Qt auch immer mitliefern musst. Vor allem die 4er Version ist unter Linux noch nicht Standard. Bei Windows und MacOS muss man es sowieso immer mitliefern.



  • Je Nach anwendung ....

    Wenn du eh QT Klassen in deinem Codeabschnitt verwendest, kannst du ruhig auch die QT container verwenden. Einige widgets und die ItemModells arbeiten da mit den containern direkter zusammen (QStringList etc)

    Schreibst du aber Code Teile, die in eine GUI freie Biblothek kommen, also alles was QT frei sein sollt, ohne QT wiederverwertbar, solltest du die STL verwenden.

    Ist also eher ne frage des internen Designs und frage ob man sauber zwischen daten und darstellungsschichten trennt.

    Ciao ....



  • Aber bedenke, dass du Qt auch immer mitliefern musst.

    Das ist heute kein wirkliches Problem mehr. Die User sind es inzwischen gewohnt, zuerst alles mögliche zu installieren, damit das Gewünschte endlich läuft. Beispiel: Damit die zweite DVD beim Installieren des neuen MS Flightsimulator X erkannt wurde, mussten viele zuerst ".Net3 Framework" installieren. Das ist heute so bei den GUIs. Jeder baut hier sein eigenes Haus mit entsprechendem Fundament, das erst eingerichtet werden muss.



  • Naja, muß man Qt installieren? Bin der Meinung, das es reicht, wenn die DLLs im Anwendungsverzeichnis liegen.



  • Erhard Henkes schrieb:

    Aber bedenke, dass du Qt auch immer mitliefern musst.

    Das ist heute kein wirkliches Problem mehr. Die User sind es inzwischen gewohnt, zuerst alles mögliche zu installieren, damit das Gewünschte endlich läuft. Beispiel: Damit die zweite DVD beim Installieren des neuen MS Flightsimulator X erkannt wurde, mussten viele zuerst ".Net3 Framework" installieren. Das ist heute so bei den GUIs. Jeder baut hier sein eigenes Haus mit entsprechendem Fundament, das erst eingerichtet werden muss.

    Das Microsoft das macht, heißt nicht, dass es gut ist..

    Artchi schrieb:

    Naja, muß man Qt installieren? Bin der Meinung, das es reicht, wenn die DLLs im Anwendungsverzeichnis liegen.

    Stimmt, aber wenn er nur die STL verwendet, muss er zumindest unter Linux nichts mitliefern.


Anmelden zum Antworten