If you want to become a really good programmer, you have to acquire an incredible amount of knowledge. Once you can code well, it doesn't make a difference to you what OS you are using. Therefore, there's a contradiction between being a great professional and only knowing how to program for Linux.
If you want to become a pro, go ahead and get a master's degree in Computer Science. If you don't want to do that, read books. Tons of them.
Qt is nice for playing around with typical problems and gaining experience, but it won't help you to understand how the low-level (hardware) or even C++ work. You could buy a C++ book, complete ones are over a thousand pages thick. This is how complicated just C++ is. But when programming C or C++ one should be aware of the hardware, too. Endianness, Caches, Virtual Memory and all this stuff is crucial for efficient programming in lower level languages.
Then, you need to master Software Design. This is the art of bringing your ideas into a shape that you can understand, REALLY understand. People tend to think in chaotic ways (that's how human brains are built) and that's not enough for building a complex program. There are great resources out there for design patterns, and many of them are fun. For example, have a look at https://sourcemaking.com/
One doesn't become a good programmer within three years. It's incredibly tough and evolves super-fast. I am myself in the middle of my CS studies and I get to feel every day how amazingly complex this matter is.
Good luck!