Qt 4.6.2 for Maemo 5 released

After two technology previews and one beta, we're happy to announce that Qt for Maemo 5 has gone gold (official platform page).

To celebrate, here's the usual video. While we used an ugly prototype with plastic covers for the TP1 videos, we're now showing Qt on an actual retail N900:

Since the beta, a lot of things have happened.

  • Kinetic scrolling has been improved, QTableView now scrolls smoothly instead of doing 2 fps
  • Several widgets got larger hit zones to make them more usable with touch
  • Read-only combo-boxes were changed to Maemo value buttons
  • QSpinBox got a new look
  • Auto-rotation (portrait/landscape) is now supported via window-flag, no more manual D-Bus usage required
  • Lots of input method improvements. Predictive text, mult-line text, symbol pickers and input method hints work reliably.
  • OpenGL ES improvements
  • QtWebKit theming issues fixed
  • And lots of smaller fixes here and there :)

There are some features that need a bit of explanation.

QSpinBox got an overhaul. The Maemo 5 style guide deprecated spin boxes, so the native theming is not drawing any spin buttons. QSpinBox is used in a lot of places, so we're bending the style guide a bit, using a separator found in another widget with custom plus/minus buttons. To make it finger touch friendly, the spin buttons are enlarged and placed at either end of the control:

QSpinBox on Maemo 5

QComboBox is deprecated in the Maemo 5 style guide. However, it's a very commonly used component, so we decided to support it as well as possible. A read only QComboBox is now rendered as a Maemo 5 value button. When invoked, a dialog slides in and allows the user to pick a value. A read-write QComboBox will display its items in a classical popup, but the items are large enough to be finger input friendly. Here's a read-write QComboBox, also showing the predictive text coming from the Maemo 5 input method:

QComboBox on Maemo 5

Kinetic Scrolling has been updated, and has been disabled by default for QGraphicsView. This is due to QGraphicsView based widgets usually having deeper control over clicks and moves, so the kinetic scroller would introduce a race condition between scrolling, dragging and interacting. It is up to the widget developer whether he wants to enable kinetic scrolling on a graphics view, or use the mouse events for other interaction modes.

QtWebKit - you might notice that it doesn't use the native widgets. This is in line with Maemo's native browser, that doesn't use the native widgets either. Maemo currently uses images for theming, which can't be stretched or modified according to the web page's needs, and also have big issues with transparency. In order to have functioning web pages, one of Qt's vector based styles needs to be used, currently defaulting to the plain windows style.

We've added some examples to the beta that illustrate how to deeper integrate with Maemo, for example on how to handle rotation, stacked windows and various window states. Lots of question on our IRC channel could simply be answered by saying "look at the xyz example". Since Maemo look&feel is quite different of any desktop Linux, we've also added a widget gallery example (in the package libqt4-maemo5-examples, path /opt/qt4-maemo5/examples/maemo5/widgetgallery) that shows how Qt widgets look on Maemo.

Qt Widget Gallery

Happy experimenting :)

A note on PR 1.1 vs. PR 1.2

So we released Qt 4.6.2 for Maemo 5 - what does that mean concretely? It means that we're done with the Maemo 5 port. Now, the only device that ships with Maemo 5 is the N900. The current N900 firmware (called PR 1.1) ships with Qt 4.5, and that can't be easily replaced. Just like every Qt release takes some time to enter upstream Linux distributions, it will take a few weeks of testing and integrating for Qt 4.6 to appear with the next N900 firmware update (called PR 1.2). In the meantime, we provide the usual packages for PR 1.1 in Maemo's extras-devel.

There's a chicken-egg situation, though. We need a stable release, otherwise PR 1.2 won't be able to integrate Qt. However, all that's in the open is PR 1.1, which has some issues that hit us:

  • Text color in Hildon banners and notes is wrong (white on yellow)
  • Styling issues with QComboBox
  • Auto-rotation not working
  • Unreliabilities with OpenGL ES

Qt on PR 1.2 doesn't suffer from these issues. In PR 1.2, Qt will also be installed in /usr, not in its current /opt/qt4-maemo5 ghetto. This means that all Qt 4.6 applications should be rebuild once PR 1.2 comes out (which is a good idea anyway).

A note on MADDE, Qt Creator etc.

So far, MADDE has not been released, so the Scratchbox based official Maemo 5 SDK is still the only supported development environment. Experimental MADDE support for Linux, Mac OS X and Windows can be found here. Please refer to the README files for installation instructions. We're trying to get Qt Creator with MADDE support to a decent level before PR 1.2 is released.

A note on Qt 4.5 compatibility

The 4.5 version of Qt that is currently available for Maemo 5 is a community port that is not supported by us. All the core Qt APIs are of course source and binary compatible also on Maemo 5. However, the community extensions done to Qt 4.5 are not, so minor changes might be in order.

A note on desktop compatibility

Though Maemo 5 has a relatively high resolution (800x480), the screen estate is limited due to widgets being quite large in order to be finger touch friendly. Check the screen shot of the widget gallery - you can fit about 5 buttons on the screen before space runs out. In addition, the Maemo style guide is quite strict on defining on how UIs should look & feel, as opposed to most desktop systems, where you can get away with almost anything. As said before, the standard Qt APIs are binary and source code compatible to desktop systems, however, some re-arranging of UIs is in order.

Where do I get it?

Short story: Add Maemo’s “extras-devel” repository and type “fakeroot apt-get install libqt4-maemo5-dev”. Qt will be installed to “/opt/qt4-maemo5″. The long story can be found on the wiki. The version number for this release is 4.6.2~git20100212-0maemo1.

The source code repository is at http://qt.gitorious.org/qt/x11-maemo.

How to get into contact?

You can reach us via the “qt-maemo-feedback” mailing list (see Mailing List instructions), or on the “#qt-maemo” IRC channel on irc.freenode.net. For bug reports, you can use our bug tracking system at http://bugreports.qt.nokia.com. Please set the bug’s component to “Maemo 5″.

Thank you

A big thank you goes to the Maemo Qt community who initially brought Qt to Maemo, the KDE and Qt communities for providing valuable feedback, Colin Guthrie for fixing several N900 Phonon issues, and everyone else inside and outside of Nokia who contributed to the effort :)


Blog Topics:

Comments