I, however, need to admit that working with Qt/C++ is much more pleasant and productive than messing with C/GObject/GTK+.
Since GTK+ 3 breaks backward compatibility a lot and it becomes more memory hungry and slower, I donít see much advantage of GTK+ now. GTK+ 2 is lighter, but itís no longer true for GTK+ 3. Ironically, fixing all of the broken compatibility is even harder than porting to Qt in some cases (PCManFM IMO is one of them).
So If someone is starting a whole new project and is thinking about what GUI toolkit to use, personally I might recommend Qt if youíre not targeting Gnome 3.
I got some feedback about the toolkit choice above. Donít get me wrong. Iím not saying that gtk+ is bad and did not intend to start a toolkit flame war. If youíre going to use python, C#, or other scripting language, gtk+ is still a good choice due to its mature language bindings.
Vala is attractive initially, but after trying it in real development, youíll see the shortcomings of this approach. Because it sometimes generates incorrect C code that still compiles, we got some really hard-to-find bugs. So we need to examine the generated C code to make sure it does things right. This takes much more time than just writing plain C code myself. Besides, the generated C code is not quite human-readable and debugging becomes a problem. Another issue thatíll hit you is the problems in the library bindings. Though there exists many vala bindings for various C library, their quality is uncertain. Finally, debugging, examing, and fixing the bindings all the time takes even more time and offsets the time saved by using Vala.
To sum up, for compiled binary programs, Qt IMHO is a good choice to consider if you donít hate C++.