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.

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:

Use QML Loader by dividing your application into logical parts and then loading only the minimum when the application starts.

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!

I’ve read the doc of ‘Split-view Input’, but I don’t feel QML is much easier or understandable as C++ coding with UI widgets and Animation Framework. If you insist to QML, I suggest to develop a powerful ‘QML Designer’ which allow people to realize their concepts without coding a lot. What we need is actually some resources, states, and transitions. right?

@Sella:
This is valuable feedback for us. First of all, our original target from the very beginning has been that Qt Quick/QML itself as an UI layout definition/programming language is easy to understand and quick to learn. And not going to too “overselling mode” here it is a fact that there are some basic concepts to get familiar with as in any other new technique.

Then, having a supportive tooling in place complements our offering. It is a correct observation that we are not fully there yet. Development continues and Qt Quick/QML support in Qt Designer will be improved when going forward. At the end of the day, an ultimate goal is that all this should be easily adopted by both Developers and Designers. The original target of Qt Quick is still valid and the target really is that only minimal coding skills are required (if any), without too detailed details from underlying platform, when developing Qt Quick applications.

Updated to the 1.1.4 SDK this morning and noticed runtime errors about not finding com.nokia.symbian qml component package…so I went through my project and changed every “import com.nokia.symbian 1.0″ to “import com.nokia.symbian 1.1″ and things are working again. It’s somewhat surprising to me that this is necessary though. What are the exact semantics of qml component versioning? My expectation is that since my app is declaring an explicit dependency on symbian components version 1.0, that version 1.1 being present in the SDK should have satisfied this dependency without me having to change the source.

@opk:
Both imports (“import com.nokia.symbian 1.0″ and “import com.nokia.symbian 1.1″) are supported in Symbian Anna (and Symbian^3) devices onwards. Due to the latest major improvements on UI level our recommendation is to use Qt Quick Components 1.1 and Qt Quick 1.1 modules included in Qt 4.7.4 Release Bundle for Symbian:http://labs.qt.nokia.com/2011/11/08/qt-4-7-4-release-bundle-for-symbian-news/

In practice this means Qt SDK 1.1.4 usage during development time. In case you still want to use older “com.nokia.symbian 1.0″ import and run your application on simulator, older Qt SDK 1.1.3 is required. As mentioned, on device both imports are supported.

@Alex Savin:
When you selected an smart installer option in Qt Creator and tested on Nokia N8 device, did you use a .sis file with “installer_” in it’s name? There is another .sis file without the Smart Installer enabled and it does not work if you don’t have Qt 4.7.4 (incl Qt Quick 1.1) and Qt Quick Components 1.1 installed on your device.

From what I’ve seen when installing Qt SDK 1.1.4 from scratch, Qt Quick Components for Symbian are only installed for the VS compiler in the default installation. The MinGW variant is not selected by default. Therefore, I couldn’t use the components, also not in the simulator.

I had to go to the SDK Maintenance tool, select the MinGW Qt Quick Components manually – then it worked fine.

Seems to be an issue with the default selection of the SDK installer tool!

Thank you, Andreas, that was the issue! I really had to look where this option was missing in the Maintenance Tool. Thanks, it works now in simulator, and (after an installation with smart installer) on N8 HW.

I hope the remote compiler will be fixed soon. Currently I cant compile anything for a device, since I cant revert back to the old sdk either. I tried installing “Qt_SDK_Lin32_online_v1_1_3_en.run” and “Qt_SDK_Lin32_online_v1_1_2_en.run” from ftp://ftp.qt.nokia.com/qtsdk/..but neither worked properly despite my uninstalling cleanly each first using the maintenance tool. In the first I had installed and could still only compiler with use symbian components 1.1 (which doesnt make sense if they were released with sdk 1.4), and in the second case I want offered a simulator target at all, even though Im sure I chose it in the installer. Seems like th uninstaller doesnt really uninstall cleanly and older versions get confused when regressing.

I also cant work together with my colleagues on any projects since I can only use

“import com.nokia.symbian 1.1″ etc

in my qml files and they can only use

“import com.nokia.symbian 1.0″ etc

Another half baked , poorly documented , hardly tested offering from Nokia that I wasted my time on – again. Well done

@Declan:
(1) There is no plans to reduce a support level for Qt 4.7.4. Currently all Qt SDK 1.1.4 users on Linux or Mac targeting Qt 4.7.4 have this limitation due to ongoing deployment on Remote Compiler server side.

Our apologies, we inform immediately when it is up-and-running again!

(2) You should find a “QtQuickComponents-1.1-for-Anna-Belle.sis” file after Qt SDK 1.1.4 installation/update from the following directory:
[PATH_TO_SDK]SymbiansisSymbian_AnnaQtQuickComponents1.1

Qt Mobility and other .sis files are available there in separate directories.

@Guillaume: Please can you report a bug report (http://bugreports.qt.nokia.com – to Qt Quick Components project) on the issue you faces and please let us know the details (what your app does preferably with a snippet or source, what environment and devices you are using etc.) so that it could be reproduced.

In cell phones , if only a small Text to display a large number of text elements , it will succeed mobile card can not .
But those words is divided into a number of elements to display the Text will not card .
Why is it so? To solve it?

@Joson:
Not sure did I get your point fully, could you explain a bit more specific? Could you share a code example?

@Wael:
No new news. Symbian^3, Symbian Anna and Symbian Belle devices are covered.

@Andrea:
All building blocks for app development are in place. It covers both pre-installed applications and applications downloaded/installed from the Nokia Store. And there is always a room for extensions and you are able to include specific custom components/UI widgets in your application.

Then what comes to system UI in Symbian devices, a next concrete step is to utilize Qt Quick Components more and more on application level, not on system UI level.

Productized Qt Quick Components variant will not be made available for S60 5th Edition devices. The reason is multifold:

Qt Quick Components provide components for the new Symbian UI style. This is the user interface style that Symbian OS UI framework and the devices native applications are rolling out in Symbian Belle. Symbian Belle won’t be available for S60 5th but only to Symbian^3 and Symbian Anna devices (see devices from http://europe.nokia.com/symbian-belle#compatible).

S60 5th Edition devices do not have hardware graphics accelerators (GPU) and the components performance e.g. in content panning is not good in many use cases.

Note that Qt Quick 1.0 and Qt 4.7 is available for S60 5th Edition devices.

Since Qt Quick Components is open source so nothing prevents a Qt Quick 1.0 application designed for S60 5th to take QML files for components from Qt Quick Components repository (http://qt.gitorious.org/qt-components) and bundle the needed parts – perhaps modified to app needs – together with the application. I.e. just have needed components QML files inside your app S60 5th ed. project. Only a minor parts on some components are designed to use native OS features but components code is designed to run without that (they run even currently e.g. on desktops!).