For application developers who are hunting down to rewrite GUI for every other OS, there is a simple and yet, an elegant solution : Qt
Qt (pronounced “Cute”) is cross-platform application and UI framework developed and maintained by telecom giant, Nokia. As far as I can tell you, this is the most portable, and yet most feature-ful UI, I’ve seen lately. Surprisingly, it works on both PCs and mobiles, alike. It supports embedded-Linux, Mac OS, Windows, Linux, Windows Mobile, Symbian, and Maemo:
Almost, every popular platform is included (I wish iPhone was bit more open).
Qt is most widely used in Google Earth, KDE, Opera, OPIE, VoxOx, Skype, VLC media player and VirtualBox and 100s of other applications. Qt uses standard C++, but makes extensive use of the C pre-processor to enrich the language. Qt can also be used in several other programming languages via language bindings. Qt uses native widgets and wraps them in a common API across all platforms. Non-GUI features (discussed later) include SQL database access, XML parsing, thread management, network support and a unified cross-platform API for file handling.
Apart from all that, it’s quiet good on features:
- Advanced GUI: A big set of widgets (with stylesheets), from buttons to tables. Advanced formatting, scaling, orientation layouts. Support for vector graphics, and hardware acceleration
- 2D, 3D Graphics & OpenGL: Full 2D, 3D acceleration enabled apps with OpenGL ES (mobile), Direct 3D (windows)
- Fully Multithreaded: High-level Multithreading API, Easier data management and synchronized inter-object communications.
- Rich Multimedia Framework: Supports multiple media codecs, streaming technologies.
- WebKit, XML, Networking Integration: Local content can be blended with Web content seamlessly.
- Databases: Supports all major databases.
It’s available via APIs for a number of Languages: C++, C#/.Net, Python, Ada, Pascal, Perl, PHP, Ruby and Java.
If we talk about Java in particular (Platform independent code + platform independent GUI makes sense right?), few factors that favor Qt more than Java Swing or Java SWT are:
- Easy to use and learn
- Good documentation
- Good support
- Active development
The official video below talks about the some of the most widely applied use cases and application in industry which vary from space to embedded systems in industries:
They have a number of Videos demoing various applications, you can check them out at their Official Youtube channel. Pretty interesting stuff, full multitouch on phones, Maps, simulations and more.
Qt has a much steeper learning curve and the API is much more consistent, not to mention that Qt has been improved the last seven years while Swing hasn’t. The Popular KDE is based on Qt, so there are lot of people out there using it, and user-experience is great.
The SDK is available under LGPL and as commercially supported licensed product too. Go ahead and proceed to Downloads section, I’m sure you will have great first-hand experiences.