Qt 4 raises the bar for cross-platform application development tools
Trolltech's comprehensive toolkit simplifies code portability, interoperability
Because different platforms might rely on differing implementations of standard templates, Qt provides an entirely portable set of data structures, including all the usual containers, as well as sophisticated items such as LRU (least recently used) caches. The product also has classes for database access (via embedded SQL) and for XML processing, with support for DOM and SAX2. A bundled XML parser can be used if other access is necessary.
Feeling Your Way
Using any app dev toolkit requires a commitment. You must understand how the library is laid out and its fundamental design, and then learn how to make use of it. Qt makes this process straightforward with extensive documentation, including numerous detailed examples. If you get into a jam, you can tap the large Qt user community. This community grew up around Qt because the toolkit is the basis of KDE, one of the two major UIs for desktop Linux. Hence, there is a lot of public domain code that uses Qt.
Unlike the APIs used in OSes (Win32 or POSIX), Qt did not grow organically. Rather, developers who made sure that calling conventions and syntax stayed uniform tended it, so Qt is far easier to use than most other large API sets. After a few weeks of using Qt, it becomes easy to guess the names of APIs you need when entering into a new programming domain.
The commercial Qt 4 product (but not the open source version) includes a new integration utility for Visual Studio .Net users. It plugs Qt Designer into the Microsoft IDE, loads Qt documentation into the Visual Studio help system, provides code completion, and bundles Visual Studio .Net templates for Qt projects. This is a useful feature that lets you design, code, and test Qt apps without leaving the environment.
The library’s largest failing, in my opinion, is that it works only with C++ . However, rather than force developers to know recondite aspects of the language, the Qt APIs and functions require only basic knowledge of C++. Any C or Java programmer will quickly figure out how to use the library.
After years of testing cross-platform toolkits, I can say that none approach Qt’s breadth of functionality or quality of implementation. I recommend Qt even for single-platform projects, as Qt is easier to learn than most OS API sets; it is much better designed, and its interfaces change less frequently. The easy portability is an added bonus.
My only reservations about Qt 4 are minor: The lack of bindings other than C++ is a bit of a handicap (Trolltech is working on this issue for future versions). Also, the highest level of tech support provides only e-mail responses to inquiries. My tests show that answers arrive within 24 hours, and I can set up a phone conference by special arrangement, but there is no standard phone offering.
These are trivial complaints; Qt users have known for a long time that they enjoy an excellent library at a terrific price. With Qt 4, an already great product makes another leap forward.