Agreed. Unlike java, GTK and Qt do not provide "write once, run anywhere". What they do provide is "minimum effort protability via a re-compile".

With perhaps a few conditional-compilation statements embedded in your codebase, you can write a Qt application that you can compile for (and continue to upgrade and maintain) multiple different platforms. Even ARM platforms.

It is not quite "write once", but it is close. Certainly the entirity of Qt itself has to be ported in full to each platform, but that is done already.

This was perhaps an original design ideal for .NET, but Microsoft shot themselves in the foot by trying to constrain .NET applications to be able to work on different versions of Windows but not to work on different platforms entirely. Trying to maintain the latter inability has crept into ruining the former ability. Newer features of .NET are not available on older .NET installations, and older versions of Windows are (or at least soon to be) no longer supported with .NET updates.

Hence, in their desire to try to get people to upgrade to Win 7 (and hence pay for Windows over again), Microsoft is leaving a large portion of what was previously Microsoft's market (specifically users running Win XP, especially users of older hardware which cannot run Win 7) entirely up to other software vendors to cater to.

So Microsoft won't provide GPU acceleration for IE9 on Win XP? Fine ... other software vendors are more than happy to provide Win XP users with an alternative browser which does feature GPU acceleration.

Expect more of the same for other software products from Microsoft as time moves along.