こうした理由だけでQtを使用することは控えません。Qtのすべてのユーティリティクラスを使用する必要はありません。STLを置き換えるものについては、せいぜいQStringと、場合によってはQStringListの使用を余儀なくされます。また、プログラムには通常、GUIよりもはるかに多くのものがあります。プログラムの残りの部分には常に汎用C ++のみを使用し、GUIにはQtのみを使用できます。
私の意見では、STLでの作業は、使用されている基礎となるデータ構造とその複雑さを理解することであり、その結果、各コンテナを使用する必要があります。C ++プログラミングに関しては、特に非常に重要な<algorithm>ヘッダーの使用方法を知ることが重要です。これは、STL互換であるため、Qtのコンテナーでも機能するはずです。
Qtが提供するすべての拡張機能を使用しても、内部的に実装される方法を知っている(または少なくとも一般的な考えを持っている)限り、それほど害はありません。Q_OBJECT、SIGNAL()、SLOT()、foreach()などが魔法ではなく、有効なC ++ステートメントに展開されるマクロであることを必ず確認してください。たとえば、QtをよりJava風に感じさせる暗黙的に共有されるクラスと親子関係がどのように実装されているかを理解することはそれほど複雑ではありません。ジェネリックC ++でできるかどうかを確認するために、別のプロジェクトでいくつかの機能をいつでも再作成してみてください。Qtでそれらを使用するのは悪くありません。
また、Boostライブラリもご覧ください。これらは、標準C ++ライブラリにはない追加のユーティリティを提供し、一般的なC ++と基本的に同じ規則に従うため、一般的なC ++に少し近づくための本当に良い方法です。一部のライブラリにはかなり複雑なテンプレートクラスがあり、それらがどのように機能するかを単に理解しようとすること自体が、C ++での優れた研究です。Boostには、Qtにはないユーティリティや、Qtのクラスの一部と同じまたは同様の概念を実装し、代わりに使用できるユーティリティが多数あります。
C ++を使用して仕事の市場に参入した場合、Qtまたは同様にC ++をよりシンプルにしようとする独自のユーティリティクラスを持つ別のフレームワークを使用する可能性があります。