Для языка с++, Qt может научить коду и мышлению здорового программиста, если речь идёт об архитектуре программы. Пишут, что теория не поможет. Как же? Как минимум, в теории можно узнать: инструкции языка, принципы ооп(SOLID), предметно-ориентированное проектирование(DDD), технологии тестирования, авто-документация кода(Doxygen), git...
Если до упора всё делать сам-сусам, то сформируется привычка, а потом узнаете что есть много вещей, которые облегчают жизнь, и будет грустно(мне было грустно). Ну и вообще, если решать алгоритмически сложные задачи, то код всегда будет корявым, в той или иной степени. Откройте исходники boost, насладитесь качеством кода. Самое простое - использовать функционал языка, который максимально понятен, постепенно расширять.
Ещё есть алгоритмическое качество кода, тут поможет литература - Кормен, Кнут (и ни в коем случае не "грокаем алгоритмы" - это дрянь).