To view parent comment, click here.
To read all comments associated with this story, please click here.
The benefits I found (I started using GTK then switched to Qt), in order of significance.
* Signals/slots. They may be slightly hacky, but it is hidden well and they really are the easiest way to code UIs. Much better than callbacks (wxWidgets, GTK) or message passing (MFC).
* Documentation. The Qt documentation is one of the best of any project I've used. It's very comprehensive, and tells you exactly what you need to know. It's like the opposite of Android documentation.
It's comparable, but slightly better than the MySQL, or MSDN docs.
* It's real C++. It isn't a hacked up a "C++ in C's clothing" using endless macros and casts like GTK is.
* More comprehensive. It includes way more useful stuff than just low-level UI things. Particularly QtXML, QtWebKit, QGraphicsView, and the network stuff.
* Qt Creator (ok, this didn't exist when I started using Qt, but still). It rocks. A sample of the many awesome features: 1. It supports smart tabs! 2. Code-completion actually works *cough* KDevelop, Anjuta *cough*. 3. Ctrl-click anything to go to its definition. Very useful.
* Performance on Windows. It doesn't suck. And it looks native, unlike GTK.
There's simply no reason to use GTK over Qt today. The only real reason was the licence, but that is resolved.
I would add a few:
Cleanly designed
Visual Studio tie-in
Bindings support
Better team leaders and funding
They still have some native control and font issues to work out in Win7 and OSX but once those are baked out you will see some ISVs switch over.
How much it is embraced in Linuxland doesn't even matter. There is nothing else on the horizon when it comes to cross-platform development.
If you're looking at it from that point of view then you're going to find yourself in troll territory pretty quickly one way or the other.
Do you enjoy copying and pasting code from libegg, libsexy or anything else directly into your applications as you try and solve dependency hell? Hint, no one feels the need to do that with Qt. Would you like cross-platform applications to work? Do you enjoy using half a dozen different libraries in your applications besides GTK that all look and program differently? Do you really think that has ever been a good idea?
If you can't glean some of the avantages from the above list then there's little that can be done for you.
What kind of applications do you work on would be a good place to start. Anyone I have known who has ever done .Net, Cocoa, Qt or even MFC programming and has looked at GTK+ have said "If that's Linux development then no wonder it has no applications. I'm not going to write them".
You've probably been doing GTK programming for two long. Ask some Windows and Mac developers what they think because they're who the Linux desktop needs to grab.
Edited 2010-10-21 16:47 UTC
AFAIK, Qt Creator, the IDE, code editor, form designer and debugger, a true OO (primarily C++) paradigm, nice Python support, the clean abstraction layer isolation from the underlying OS that Qt provides, the extensive documentation provided for Qt, and the ability to easily support a wide set of target platforms ARE the main things that you are missing out on.
This site might be able to shed a little light on it for you:
http://www.wikivs.com/wiki/GTK_vs_Qt
It might be a little behind the very latest developments, but it seems to address your question reasonably well.




Member since:
2006-02-01
Thanks, but perhaps I should have been clearer; my query wasn't so much "how can I learn about Qt", but rather *why* should I learn about Qt? What would it get me? Why is it better than the technologies that the Gnome world uses?
You can find a lot of things saying "Qt is superior" without any real details about what makes it superior.
Again, this isn't meant to be a troll or an invitation to a flamewar. Like I said, I know quite a bit about GTK development -- I do it for a living -- and I'm wondering what it is I'm "missing out on".