No me abstendría de usar Qt solo por esas razones. No es necesario que use todas las clases de utilidad de Qt; para los que reemplazan el STL, a lo sumo se verá obligado a usar QString y, posiblemente, QStringList. Además, generalmente hay mucho más en un programa que la GUI. Siempre puede usar C ++ exclusivamente genérico para el resto de su programa, y usar Qt solo para la GUI.
En mi opinión, trabajar con STL se trata más de comprender qué estructuras de datos subyacentes se usan y sus complejidades, y, en consecuencia, en qué momentos debe usar cada contenedor. Y cuando se trata de programación en C ++, se trata especialmente de saber cómo usar el encabezado <algoritmo> muy esencial, que también debería funcionar en los contenedores de Qt, ya que son compatibles con STL.
No veo mucho daño en el uso de todas esas extensiones que Qt proporciona, siempre que sepa (o al menos tenga una idea general) de cómo se implementan internamente. Asegúrese de saber que cosas como Q_OBJECT, SIGNAL (), SLOT (), foreach (), no son mágicas, sino macros que se expanden a declaraciones válidas de C ++. Por ejemplo, no es tan complicado entender cómo se implementan las clases implícitamente compartidas y las relaciones padre-hijo que hacen que Qt se sienta más parecido a Java. Siempre puede intentar recrear alguna funcionalidad en un proyecto separado solo para ver si puede hacerlo con C ++ genérico, y luego no sentirse mal por usarlos en Qt.
Además, eche un vistazo a las bibliotecas de Boost. Proporcionan utilidades adicionales que la biblioteca estándar de C ++ no ofrece, y son una muy buena forma de acercarse un poco más a C ++ genérico, ya que esencialmente siguen las mismas convenciones que C ++ genérico. Algunas de las bibliotecas tienen clases con plantillas bastante complejas, y simplemente tratar de entender cómo funcionan es, en sí mismo, un buen estudio en C ++. Boost tiene muchas utilidades que no se pueden encontrar en Qt, y otras que implementan los mismos conceptos o similares que algunas de las clases de Qt y pueden usarse en su lugar.
Si llega al mercado laboral trabajando con C ++, es probable que trabaje con Qt u otro marco que, de manera similar, tenga sus propias clases de utilidad que intenten simplificar C ++.