My advice - don't EVER think about development for Windows!
Think about development for for cross-platform or for Linux/Mac. There is no arguing Windows has the best developer tools, but once you step into DirectX, MFC, WTL, WinAPI or something like that, that's it. End of story, you're platform locked.
On the other hand, if you start writing with cross-platform or *nix in mind, it usually takes few lines of OS specific code to get the app to compile and work everywhere.
I have heard your sentiment before, and your last sentence is indeed a very strong
argument. But unfortunately, I am not currently enthusiastic about development for Linux because I am not (yet) enthusiastic about USING Linux.
Then don't use Linux. Write the code on Windows PC, with MSVS2010 or MSVS2012, but target Posix/C/C++ functions, and use Qt/wxWidgets or any other cross platform framework.
But ALWAYS think from cross platform perspective. If it's Windows or cross platform, always choose the cross platform alternative.
Sorry if this sounds controversial, and maybe it's a really weak argument, but there is not a single Linux distro that I have had any measure of success installing or using.
An awful lot of forum posts claim that Linux (or Mint, in this example) is better than anything else out there, yet in the next breath the writer will tell you that it has a steep learning curve and you have to spend a lot of time reading and learning and experimenting.
Eventually I will spend that time. In this moment, it is my opinion that Linux is still too difficult for mere mortals, and that makes it too random for my target audience.
To tell the truth, that sounds like a post from 1990... I'm using Mint as my primary OS, and I haven't used terminal at all to get it working. Once it installed, which happened 100% automatically. It was ready to use. Zero input from my side. It was even easier than Windows 8 setup, a lot easier, which kinda surprised me.
In bash_history of this PC I have only 60 entries. Most of which are commands to install new software (which I find easier than through GUI, eg. - 'sudo apt-get install thinderbird'), commands to list directory contents or move files, and a little bit of troubleshooting entries when I tried to launch Win application through Wine + Wine install + winetricks.
And the second part is also doable through GUI, and is an advanced scenario, which you might not even need.
Really, if you're scared that Mint 13 is complex, you should try it out. You might be shocked that it's actually easier than Windows, by a lot! At least that's my experience.
Although for development I still prefer WinDbg/VisualStudio over gdb/CodeBlocks
For everyday use, it's Mint all the way! Zero maintenance and does everything I need.
I like the concept of QT because it doesn't appear to force me to learn a new OS to write cross-platform code. My only hesitation is that future opportunities might be closer to hand if I am somewhat more familiar with Visual Studio and Microsoft's libraries.
IMHO, knowing MS C++ specifics like ATL containers, MFC containers and classes is actually not that beneficial. They are not that cool, and MFC actually stinks.
STL does everything in a more portable and standardized way.
The problem is that Qt and wxWidgets predate STL if I'm not mistaken. And they use their own containers extensively. So learning C++ through Qt or any other framework could be rather tricky.
One way would be to split application in layers, which is a good practice, and write lower layers in truly portable C++/STL. And use Qt only for GUI stuff and lower layer calls.
EDIT: Diagram about layers - http://www.guidanceshare.com/wiki/Appli ... a_Services
This is how pretty much EVERY application should be built. Don't place any logic in GUI calls, EVER!
Core 2 Duo E6300, MSI P45 NEO-F, Club 3D GTX 260, 4Gb DDR2-800Mhz, Audigy X-Fi Fatal1ty Champ1on ed., 0.5Tb+1Tb Seagate Barracuda 7200.12, 630W AXP, Samsung SyncMaster BX2450, ViewSonic VP171b