Nokia has announced the availability Qt 4.5, a major update of the popular development toolkit. This version is packed with impressive new features and includes significant performance improvements. Nokia has also delivered the first official release of Qt Creator, a lightweight development environment designed to facilitate rapid construction of Qt applications.

Qt is a cross-platform C++ development framework for graphical application development. It is distributed under an open source license and is supported on Windows, Mac OS X, Linux, and several mobile operating systems. It was originally created by Trolltech, a Norwegian software company that was acquired last year by Nokia. The toolkit is popular on the Linux platform where it serves as the foundation for the KDE desktop environment and software ecosystem. It is also used by some commercial software developers, including Google, Skype, and Adobe.

The evolution of Qt under Nokia

The licensing and business model behind Qt has evolved considerably since the toolkit was first released. It went through several major licensing transitions and eventually ended up with a dual-license model under the GPL for open source software developers and a commercial license for proprietary software developers.

The cost of the commercial license created a steep barrier to entry for proprietary developers who wanted to adopt the toolkit. Nokia changed this in January when the company announced plans to transition the Qt codebase to the permissive LGPL license which would broadly enable proprietary development without a commercial license. That move is a serious game-changer for Qt as it eliminates the primary impediment that has traditionally compelled major software makers to use GTK+ or other alternatives. Qt 4.5 is the first major version of the toolkit to be released under the LGPL.

Nokia is making a lot of other changes, too. The company is streamlining Qt development and increasing its focus on the core toolkit at the expense of some of Trolltech's other major offerings. Nokia announced last month that it will discontinue Qt Jambi, a project that brought Java support to the toolkit. Nokia is also pulling the plug on Qt Extended, Nokia's rebranded version of Trolltech's Linux-based Qtopia mobile platform build.

The demise of Qt Extended is not particularly surprising, because Nokia is already investing heavily in its Linux-based Maemo platform and in the Symbian operating system, which Nokia recently acquired for the purpose of transitioning it to an open source development model. Maemo and Symbian both have Qt ports.

It's worth noting that these abandoned projects aren't going to disappear entirely. Nokia intends to merge some of the features of Qt Extended back into the toolkit so that those capabilities can be used in Qt applications across all supported platforms. Nokia is also making source code fully available so that existing Qt Extended and Jambi users can form their own community-driven development efforts around the projects and perpetuate or expand them as needed.

Although there have been some rough spots, it seems like Nokia's stewardship has generally had a very positive impact on the toolkit. Nokia is clearly committed to moving it forward and is actively expanding development.

New features

WebKit enhancements

The last major version of the toolkit introduced support for the QtWebKit module, which enables application developers to embed Apple's open source WebKit HTML rendering engine directly into Qt applications. It provides a high-level QWebView widget that has a self-contained WebKit renderer with full support for bidirectional communication between JavaScript and native code.

QtWebKit has been greatly enhanced in Qt 4.5. The developers have merged in some of the latest improvements from the WebKit trunk and have also implemented support for a nice assortment of important features from emerging web standards, including HTML 5 and CSS3. One of the most exciting additions is the inclusion of SquirrelFish, WebKit's fast new JavaScript engine.

I conducted several tests to see how it compares to other WebKit implementations. It gets 100/100 on Acid 3, but doesn't quite fully pass yet. I also tried it out with a bunch of CSS 3 features—such as text-shadow and RGBA color—and several of the non-standard WebKit CSS capabilities, including gradients and reflections. It handled these well, which seems to indicate that it is a bit ahead of Chrome and on par with the GTK+ WebKit port in the area of CSS support.

QtWebKit also got lots of new support for rich media content in this version. The Netscape plugin API has been implemented, which means that it is now possible to embed Flash content in Qt applications and display it in the QWebView widget. The Qt developers also implemented native HTML 5 video and audio support by leveraging the Phonon multimedia framework as a rendering backend.

As the web becomes an increasingly central part of the computing experience, desktop software will have to adapt to provide better integration with web content and services. This trend is driving the growth of rich Internet application (RIA) frameworks such as Adobe AIR. Qt's pervasive support for web technologies—including WebKit, CSS theming, XML support, and JavaScript extensibility—at several different layers of the toolkit stack make it a compelling option for rapid development of RIAs.

Qt Creator

In addition to releasing Qt 4.5, Nokia has also launched Qt Creator, an open source integrated development environment (IDE) for building Qt applications. Qt Creator is a relatively new project, but it's already pretty useful and robust. We were impressed back in November when we got our first look at an early technical preview. It has matured a bit since then and has gotten some much-needed QA love that makes it stable enough for day-to-day use.

Qt Creator provides end-to-end support for the entire Qt application development workflow. It has a project generator, tight integration with Qt Designer, support for code editing with autocompletion and syntax highlighting, and a built-in breakpoint debugger. The user interface has a few really handy features, such as a search system that can be used to speed up navigation and quickly get to individual methods in source code.

Qt Creator is supported on Windows, Linux, and Mac OS X. The binaries are distributed as part of an SDK bundle that also includes the toolkit and various dependencies. The installers are a bit large: 194MB on Windows, roughly 269MB on Linux, and 430MB on Mac OS X. Installation is relatively painless and intuitive.

The Windows bundle unfortunately lacks support for using Visual Studio's compiler. Instead, it comes with a MinGW toolchain. This can be problematic in some cases because there are certain features of Qt, including Phonon, that don't work in MinGW. It will not be possible to use Qt Creator on Windows to develop or compile applications that use those features.

Despite the limitations, Qt Creator is pretty good and it serves an important function. It makes it easier for new developers to get started, because it provides a complete build environment right out of the box and it automates a lot of the trickier aspects of Qt development that might create challenges for the uninitiated.