User: Password:
Subscribe / Log in / New account

A quick look at Qt 5.3

This article brought to you by LWN subscribers

Subscribers to made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

By Nathan Willis
May 21, 2014

Version 5.3 of the Qt application framework was released on May 20, bringing with it a number of improvements to mobile-platform support, plus enhanced printing support, toolchain improvements, and several new widget classes. Qt incorporates a large number of libraries for application development, which can at times make for a dizzying list of changes. Fortunately, the new bits found in the 5.3 release can be grouped into a handful of general categories.

Although Linux users may be most familiar with Qt's desktop support through projects like KDE and Calligra, one of Qt's major selling points in recent years has been its cross-platform availability—including mobile device platforms. The 5.3 release pushes forward on this front, adding several new features on Android as well as introducing support for Windows Phone 8 and QNX Neutrino 6.6. QNX support is a feature that Qt's corporate sponsor Digia uses to plug its Qt Enterprise services, but in this case that enterprise offering only adds pre-built binaries of Qt for QNX; other users can still build their own QNX libraries should they choose to do so.

Two new APIs are now available on Android: Qt Bluetooth (for Bluetooth functionality) and Qt Positioning (which provides geolocation services). Android v2.3.3 (Gingerbread, a.k.a. API level 10) or later is required for both. On desktop Linux systems, notably, the Qt Bluetooth API is limited to BlueZ version 4. BlueZ 5 was released in December 2012, so there are some differences compared to what may ship with a recent Linux distribution. BlueZ 4 uses a different API and kernel interface, and it does not support as many Bluetooth profiles; developers will no doubt want to proceed with a careful evaluation of the difference.

The Positioning API is also made available for iOS in this release, along with a few other Apple-related changes. On iOS, Qt now supports multiple input methods, spell-checking, word autocompletion, and clipboard integration.

Printing support received a major overhaul for 5.3. A QPlatformPrintDevice class has been introduced, which enables applications to access the underlying operating system's printers through a uniform cross-platform API. On Linux, this requires CUPS 1.4 or newer (thus dropping support for RHEL 5 and several other older distributions). There are also QPageSize and QPageLayout classes to provide cross-platform control of page size, orientation, and other print features.

Several new Qt classes and modules are introduced with this release. QCameraInfo allows an application to query the availability and specifications of any attached camera devices. Qt WebSockets is, as the name suggests, an implementation of the WebSocket protocol (RFC 6455) for two-way communication between web servers and in-browser applications. Also on the web-application front, Qt WebKit now supports the HTML5 Video <track> element, which is used to connect external timed "tracks" (such as subtitles or closed captioning) to a <video> element, and the IndexedDB API, which is used for lightweight indexed databases.

More generally, but still of interest to web-app developers, Qt 5.3 now supports the SPDY protocol (version 3.0) for reducing HTTP latency.

There are also several updates to the Qt Quick library used to write applications in the JavaScript-based QML language. New are an interactive Calendar widget, and support for passing through mouse events that occur inside a multi-point gesture area for handling as normal (that is, non-gesture) input events. Also, Qt Quick dialogs now support folder shortcuts, including both standard (system-defined) shortcuts and user-bookmarked locations.

There are not a lot of Linux-specific updates in Qt 5.3, although one is significant. Qt now supports XInput2's "smooth scrolling" feature. This is primarily of use to touchpad users, where high-precision scrolling is more readily apparent than it is for mouse wheels and other input devices.

Alongside Qt 5.3 itself, the Qt project has updated its tool set. The Qt Creator IDE has been updated to version 3.1. Among its new features is support for an experimental Clang-based code model; it enables the editor to use code completion and semantic code highlighting. There is also a JavaScript profiler for QML applications and improved support for working in multiple editors simultaneously.

All in all, Qt 5.3 incorporates a number of small but worthwhile changes over the previous release. Qt is using a time-based release schedule these days, but the 5.3 release is an important one. The KDE project is expected to move to Qt 5.3 for its forthcoming Plasma 5 release, and Ubuntu plans to migrate to it for the distribution's 14.10 release. Whether or not the enhancements to Qt make a significant impact on Windows Phone and QNX users, of course, is another matter. But Linux desktops can expect to see Qt 5.3 be a significant release for some time to come.

(Log in to post comments)

A quick look at Qt 5.3

Posted May 23, 2014 3:48 UTC (Fri) by yodermk (subscriber, #3803) [Link]

Just in time. I am working on a desktop calendar generator program which outputs PDFs, and was frustrated that I couldn't set the page orientation to landscape. Looks like 5.3 can (but haven't tried it yet).
but it's not close to ready so other than making fun of my code, don't expect to do too much yet. Hopefully by November though - I want to use it instead of Costco to generate my photo calendars this year.

A quick look at Qt 5.3

Posted May 23, 2014 10:52 UTC (Fri) by nix (subscriber, #2304) [Link]

BlueZ 4 uses a different API and kernel interface, and it does not support as many Bluetooth profiles
That 4 should almost certainly be 5: BlueZ 4 supports more profiles than 5 does, IIRC. (I'd send this to the typo address, but I'm not sure it counts as a typo: it may be intentional, but if it is, I don't think it's right.)

Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds