To read all comments associated with this story, please click here.
Overall, I like it as a GUI toolkit. But I don't like how it tries to replace the STL with its own counterparts, or how it uses the Meta-Object Compiler to extend the language. That, combined with its dual-licensing policy, I tend to prefer other toolkits.
Though, I have to admit this is primarily taste
. Obviously things like QString curently provide advantages, like good internationalization support. But you are locking yourself into one toolkit, which can be OK for applications, but is less nice for e.g. libraries.
The concern about replacing parts of the STL has, in my opinion, been adressed in the 4.0 release when Qt was split into smaller modules. For instance, if you use QString in a library, you only need to link to QtCore. That is a reasonable dependency just like another. It is much lighter than linking to all of Qt -- which practically no app or library does.
It is perfectly OK to replace the standard library and Qt is certainly not the only such alternative. For example Boost also provides replacements for many classes, and I think that GTK (and GTKmm) also does. The standard library is rather old-fashioned and C++ programming has evolved since the times when it was designed, 20 years ago. You mention better unicode support as an advantage of QString over std::wstring, and I would mention at least another one: copy-on-write. Being able to write a function that just returns a QString without paying the overhead of uselessly copying that string, is awesome.
About the Meta-object-compiler, (MOC) what's wrong about it? It provides huge advantages that one just can't achieve otherwise. The biggest one is introspection. Ever wondered why Apple uses Objective C instead of C++? Introspection. The MOC brings introspection to C++, and that's huge. QObjects can e.g. enumerate their own methods, call methods by name, etc. This allows for much more flexible signals-and-slots than is possible with tempate solutions (a la GTKmm). Hugely valuable for a GUI toolkit, to connect to dynamically loaded components. It also improves the i18n system. Trust me the MOC brings enough benefits to justify its existence
And by the way who said C++ was an immuable thing that nobody may improve except for an ISO committee
Some more info here:
http://doc.trolltech.com/4.3/templates.html
Edit: one important precision, the MOC is, like the other Qt tools, Free software released under the GPL 2/3. So it's not at all a "proprietary extension to c++" as is sometimes trolled.
Edited 2008-05-07 14:31 UTC
What exactly is wrong with the dual-licensing policy?
If you are going to use Qt in a closed, commercial, for-your-profit application, you have to pay Trolltech a license for using Qt as part of your product. This is the same deal as with any other commercial toolkit.
If you are going to use Qt in a give-code-back-to-the-developer-community open source application, then Trolltech are happy that you need pay them no license fee for that.
It seems like a perfectly fair arrangement to me.
Edited 2008-05-07 14:49 UTC
The price of a commercial license is extremely prohibitive. It's approximately $4k a year per developer. Some people might laugh at that and say that's no big deal. To put things in perspective, Visual Studio 2008 Professional sells for $689 on Amazon. Codegear's (was Borland) RAD Studio costs $1k. REALBasic costs $500.
Qt is really expensive, and it's quite hard to get that purchase order approved. Especially when Visual Studio + wxWidgets is a lot cheaper and isn't really much worse off.
Very thanks Trolltech!
Correction.
Very thanks Trolltech!






Member since:
2005-11-15
So far, the best toolkit I ever used hands down. Good docs, amazingly portable, rational license terms, fast and very well thought out. Now complete with kitchen sink.
Very thanks Trolltech!