Ich würde nicht nur aus diesen Gründen auf Qt verzichten. Sie müssen nicht alle Dienstprogrammklassen von Qt verwenden. Für diejenigen, die die STL ersetzen, müssen Sie höchstens QString und möglicherweise QStringList verwenden. Außerdem gehört zu einem Programm in der Regel viel mehr als die grafische Benutzeroberfläche. Sie können für den Rest Ihres Programms immer ausschließlich generisches C ++ verwenden und Qt nur für die GUI verwenden.
Meiner Meinung nach geht es bei der Arbeit mit STL eher darum, zu verstehen, welche zugrunde liegenden Datenstrukturen verwendet werden und wie komplex sie sind, und folglich zu welchen Zeiten Sie jeden Container verwenden sollten. Und wenn es um C ++ - Programmierung geht, geht es vor allem darum, zu wissen, wie der sehr wichtige <algorithm> -Header verwendet wird, der auch für die Container von Qt funktionieren sollte, da sie STL-kompatibel sind.
Ich sehe keinen großen Schaden in der Verwendung all dieser Erweiterungen, die Qt bereitstellt, solange Sie wissen (oder zumindest eine allgemeine Vorstellung davon haben), wie sie intern implementiert sind. Stellen Sie sicher, dass Dinge wie Q_OBJECT, SIGNAL (), SLOT (), foreach () keine Magie sind, sondern Makros, die zu gültigen C ++ - Anweisungen erweitert werden. Zum Beispiel ist es nicht allzu kompliziert zu verstehen, wie die implizit geteilten Klassen und Eltern-Kind-Beziehungen implementiert werden, die Qt Java-ähnlicher erscheinen lassen. Sie können immer versuchen, einige Funktionen in einem separaten Projekt neu zu erstellen, um zu prüfen, ob Sie sie mit generischem C ++ ausführen können, und sich dann nicht schlecht fühlen, wenn Sie sie in Qt verwenden.
Schauen Sie sich auch die Boost-Bibliotheken an. Sie bieten zusätzliche Dienstprogramme, die die Standard-C ++ - Bibliothek nicht bietet, und sind ein guter Weg, um generischem C ++ ein Stück näher zu kommen, da sie im Wesentlichen denselben Konventionen folgen wie generischem C ++. Einige der Bibliotheken haben ziemlich komplexe Klassen mit Vorlagen, und der Versuch, einfach zu verstehen, wie sie funktionieren, ist an sich schon eine gute Studie in C ++. Boost hat viele Dienstprogramme, die in Qt nicht zu finden sind, und andere, die dieselben oder ähnliche Konzepte wie einige der Klassen von Qt implementieren und an deren Stelle verwendet werden können.
Wenn Sie mit C ++ auf den Arbeitsmarkt kommen, besteht die Möglichkeit, dass Sie mit Qt oder einem anderen Framework arbeiten, das ebenfalls über eigene Utility-Klassen verfügt, die versuchen, C ++ zu vereinfachen.