Eu não evitaria usar o Qt apenas por esses motivos. Você não é obrigado a usar todas as classes de utilitários do Qt; para aqueles que substituem o STL, você será forçado a usar o QString e, possivelmente, o QStringList. Além disso, geralmente há muito mais em um programa do que a GUI. Você sempre pode usar C ++ exclusivamente genérico para o restante do seu programa e usar o Qt apenas para a GUI.
Na minha opinião, trabalhar com STL tem mais a ver com entender quais estruturas de dados subjacentes são usadas e suas complexidades e, consequentemente, em quais momentos você deve usar cada contêiner. E quando se trata de programação C ++, trata-se especialmente de saber como usar o cabeçalho <algorítmo> muito essencial, que também deve funcionar nos contêineres do Qt, já que eles são compatíveis com STL.
Não vejo muito mal em usar todas essas extensões que o Qt fornece, desde que você saiba (ou tenha pelo menos uma idéia geral) de como elas são implementadas internamente. Verifique se coisas como Q_OBJECT, SIGNAL (), SLOT (), foreach () não são mágicas, mas macros que se expandem para instruções C ++ válidas. Por exemplo, não é tão complicado entender como as classes compartilhadas implicitamente e os relacionamentos pai-filho que fazem o Qt parecer mais com o Java são implementados. Você sempre pode tentar recriar algumas funcionalidades em um projeto separado, apenas para ver se você pode fazê-lo com C ++ genérico e não se sentir mal por usá-las no Qt.
Além disso, dê uma olhada nas bibliotecas do Boost. Eles fornecem utilitários extras que a biblioteca C ++ padrão não oferece, e são realmente uma boa maneira de se aproximar um pouco do C ++ genérico, pois seguem essencialmente as mesmas convenções que o C ++ genérico. Algumas das bibliotecas têm classes de modelo bastante complexas, e simplesmente tentar entender como elas funcionam é, por si só, um bom estudo em C ++. O Boost possui muitos utilitários que não podem ser encontrados no Qt e outros que implementam conceitos iguais ou semelhantes às de algumas classes do Qt e podem ser usados em seu lugar.
Se você chegar ao mercado de trabalho trabalhando com C ++, é provável que trabalhe com o Qt ou outra estrutura que, da mesma forma, tenha suas próprias classes de utilitários que tentam simplificar o C ++.