Qt Quick Components 1.1 for Symbian - Update

Four months back, in July 2011, the very first wave of Qt Quick Components found it's way to Symbian 3 and Symbian Anna devices. Lately Nokia N9 began shipping with the pre-installed set of Qt Quick Components for MeeGo 1.2 Harmattan.

Development continues, and now Qt Quick Components 1.1 for Symbian is out!

This update is a part of a new released bundle for Symbian Anna and Symbian Belle. It contains Qt 4.7.4, Qt Quick 1.1 and Qt Quick Components 1.1 for Symbian, enabling rapid application UI design and development. For more information about the full content of the Qt release bundle, read this blog post Qt 4.7.4 Release Bundle for Symbian news by Aleksi Uotila.

Qt Quick Components 1.1 for Symbian introduces new features:

  • Right-To-Left support enabling a layout mirroring (eg. text and icons) for Right-To-Left languages
  • Split-view input replaces the full screen virtual keyboard with the more user friendly partial screen virtual keyboard
  • Input Context gives access to software input panels' size and visibility
  • Inverted Style provides an alternative style for the Qt Quick Components with inverted colors

and it brings new useful components:

  • Label ensures a convenient way to provide body text and links using platform's default font and color
  • SearchBox provides a search bar functionality for progressive search with a search input field and a search icon
  • PageStackWindow brings "all essentials in one" (a StatusBar, the page navigation and a ToolBar) with platform's look and feel

To get started with our new offerings, download updated Qt SDK, find updated design guidelines at Nokia Developer site and learn how to utilize ~50 ready made building blocks in your Qt Quick application. The deployment of the new Qt release bundle for Symbian ensures a remarkable device base and opportunity for high volume downloads for your Qt Quick application in the Nokia Store (see Aleksi's blog post for more details).

There is new handy functionality in this update and also the non-functional part has been improved under the hood. Creation times of the Qt Quick Components have been monitored and based on findings the slowest components have been optimized, for example TextArea and TextField components have been improved a lot. ListView scrolling speed is fluent now, a major finding has been that ListView scrolling speed depends on how fast the delegates are. It is possible to achieve performance close to 60 frames per second (fps) when ListItem, ListItemText or Image delegates are used.

Having improvements in a stack is an important step forward, but equally important to that is to have optimized design at the application level. The very first step towards better performing Qt Quick applications using Qt Quick Components is to avoid some common mistakes. At the end of the day, different use cases in different kind of applications should be analysed case by case, but here are a few generic performance improvement tips that should be taken into account in most applications:

  1. Use QML Loader by dividing your application into logical parts and then loading only the minimum when the application starts.
  2. Load large images asynchronously in a separate thread to keep the user interface responsive (QML Image asynchronous: true).
  3. Avoid resizing/scaling of images by using images that are in their native size rather than re-size/scale large images to correct sizes.
  4. Use QML Image's sourceSize property with large images due to fact that this property sets the actual number of pixels stored for the loaded image.
  5. Pay attention to memory consumption, when using a PageStack. The PageStack is an easy way to handle navigation in your application,  but the other side of the coin is that it's usage can lead to excessive memory consumption when the PageStack depth keeps on increasing. This can happen if the user always navigates forward to a new page (a new page is pushed in the stack and memory is allocated), but never navigates backward in the stack (pages are not popped off from the stack and memory is not freed).
That's all for now about this update, we keep posting when something new is on the horizon!

Blog Topics: