Non mi asterrei dall'usare Qt solo per questi motivi. Non è necessario utilizzare tutte le classi di utilità di Qt; per quelli che sostituiscono l'STL, sarai al massimo costretto a usare QString e, possibilmente, QStringList. Inoltre, di solito c'è molto di più in un programma rispetto alla GUI. Puoi sempre usare esclusivamente C ++ generico per il resto del tuo programma e usare Qt solo per la GUI.
A mio avviso, lavorare con STL riguarda soprattutto la comprensione delle strutture di dati sottostanti utilizzate e delle loro complessità e, di conseguenza, in quali orari è necessario utilizzare ciascun contenitore. E quando si tratta di programmazione C ++, si tratta soprattutto di sapere come usare l'intestazione <algoritmo> molto essenziale, che dovrebbe funzionare anche sui container di Qt, poiché sono compatibili con STL.
Non vedo molto male nell'usare tutte quelle estensioni fornite da Qt, purché tu sappia (o abbia almeno avuto un'idea generale di) come vengono implementate internamente. Assicurati di sapere che cose come Q_OBJECT, SIGNAL (), SLOT (), foreach (), non sono magiche, ma macro che si espandono in istruzioni C ++ valide. Ad esempio, non è poi così complicato capire come vengono implementate le classi implicitamente condivise e le relazioni genitore-figlio che fanno sembrare Qt più simile a Java. Puoi sempre provare a ricreare alcune funzionalità in un progetto separato solo per vedere se potresti farlo con C ++ generico e quindi non sentirti male per usarle in Qt.
Inoltre, dai un'occhiata alle librerie Boost. Forniscono utilità extra rispetto alla libreria C ++ standard e sono un ottimo modo per avvicinarsi un po 'al C ++ generico, poiché essenzialmente seguono le stesse convenzioni del C ++ generico. Alcune delle biblioteche hanno classi temporanee abbastanza complesse e il semplice tentativo di capire come funzionano è, di per sé, un buon studio in C ++. Boost ha molte utility che non possono essere trovate in Qt, e altre che implementano gli stessi concetti o simili di alcune delle classi di Qt e possono essere usate al loro posto.
Se colpisci il mercato del lavoro lavorando con C ++, è probabile che tu stia lavorando con Qt o un altro framework che, allo stesso modo, avrà le sue classi di utilità che tentano di semplificare il C ++.