In the spirit of doing releases and more specifically, Jasons doing releases (or at least blogging about them), I am happy to present to you the latest release of the Qt for S60 port! Go ahead, download it in the background while you keep reading:
Following fresh on the heels of the Qt 4.5.0 release, our latest release, commonly referred to as “Garden”, is a real showcase for all the hard work that we have done over the past 4 months. Espen set the bar pretty high when he mentioned our ambitions for Garden back in December, but I am quite proud to say that we pulled it all off in the end. One of the most obvious differences you’ll notice from the previous (Temple) release is that this one is based on Qt 4.5. That means we got a bunch of performance improvements and other features practically for free!
One of the main goals of this release was to cleverly disguise Qt applications as native S60 applications and see if we could fool our grandmothers. This was no easy feat considering that S60 has interchangeable themes, input methods, and special menus and adding to that the fact that our previous release looked like a certain OS from 1995, we knew we had some work to do. Well, grandma put on her reading specs and fired up her XpressMusic 5800 to have a look and she was pleasantly surprised!

She immediately saw the application themed correctly and could input text like she did in other S60 applications (they call her “CrazyThumbs” at bingo) and after trying some other Qt applications she could use menus and even drag-n-drop worked! Well, needless to say she had no idea that she was using the same application framework that powered the desktop environment on her Linux box!
Ok, far fetched fantasies aside, there are tonnes of other improvements in the Garden release. We have rewritten large parts of our event loop and also QWidget so that QApplication and QWidgets can be easily embedded in native S60 applications. In fact, we even introduced a new static library called ‘qtmain’ to hijack the entry point and construct a full S60 application before calling an application’s main() function. With the full S60 environment at our disposal we could start integrating with things like the status pane and menu pane thus making functions like QWidget::setWindowTitle() work properly. Finally, we ported a few new classes such as QLocale, QClipboard and QDesktopServices. There are lots of other things I could mention, but I don’t want to steal all the joy from reading the changelog
To get you up and running with the build, here is Alessandro to explain the details:
Finally, here is a video from Espen where he takes you on a walk through the Garden (release):
The next steps for us will be to evaluate where we go next with the port. I won’t cover that here today since it warrants a blog post of its own so I’ll keep you in suspense. Enjoy!
Getting help and providing feedback
Pre-releases are not supported, but we still want your feedback of course. We have set up a special mailing list for feedback on the S60 port:
This list is read by the developers working on the port, so please join if you want to provide technical feedback, bug reports or suggestions to us directly. In order to join the mailing list send a mail to:
qts60-feedback-request@trolltech.com
There is also a Nokia Forum available here.
Possibly related posts:
18 comments
Where can I get this beautiful qt-greeny theme for s60 phone?
Looks great so far, but when will it be possible to cross compile for S60 on Linux?
I suppose you’re going to integrate this into QtCreator?
It’s great to see more and more platforms running Qt – from a developer’s perpective.
However, there’s this thing called iPhone. It’s fun using it, you can use your clumsy fingers instead of a pen. Its UI is cool looking and optimized for a mobile device, its applications do not try to do everything that desktop applications do.
As a developer you are more or less forced to reimplement much your desktop application when you want to have an iPhone version of it. And that actually makes sense because a (good) UI for a mobile phone is completely different from a Desktop UI.
Because of this, Qt “mobile” should offer a new set of good looking widgets optimized for use on mobile devices. Animation and other eye candy should just work. If a Qt application is cleanly seperated between core and GUI functionality, it should be easy to make a good mobile version from it. And unlike the rather incomplete Cocoa Touch all of Qt’s non GUI functionality (Network, XML, etc.) would also be available.
Together with easy development/deployment methods this could reanimate Nokia on the smartphone market (I just cannot persuade anyone right now buying a Nokia phone when they can get an iPhone…).
Time is running out for Nokia (and other non-Apples, too), you really have to hurry up!
Any potential for developing Qt/S60 apps on the Linux platform?
@kriko: I actually don’t know, but I’ll see what I can find out and post it in a separate comment if I find something.
@Thorben: There have been some efforts by the community around using Symbian SDKs on Linux (GnuPoc) however we haven’t had much time to investigate this ourselves. As for when this will officially be supported by Symbian (Nokia) I really don’t know for sure. As for QtCreator integration, it seems like a logical step
I use it now for editing the code and you could even add custom build steps in Creator if you wanted it to compile as well.
@Nils: The iPhone… yes I’ve heard of that
As you can see from other blog posts, we are already pursuing animation and obviously the mobile platforms are where this will probably be exercised the most. As for “hurrying up”, we are typing as fast as we can!
@Jason: See @Thorben
Animation is just a part of the game. Currently Nokia lacks a concept of what applications on their devices should do (most certainly they should not do ftp
. If this is clear, Qt should offer the necessary means to implement them in a simple and elegant way (I want libQtGuiMobile.so).
Take one of the AppStore Applications and try to implement (speak copy) it with Qt on a Nokia device. If that works you’re on the right way.
I’m not just spending my time thinking about that stuff because I like Qt. I’m a Nokia shareholder, too
@jbarron re @Nils: what I’m curious is will Qt anywhere mean we’ll eventually be able to port our Qt apps, or just develop Qt apps directly, for the iPhone itself? I’m not holding my breath, since Trolltech is now owned by Nokia which happens to be a phone manufacturer, but once an hope.
@will: I don’t believe we’ll ever see Qt on the iPhone. It just doesn’t make sense to ship the huge Qt GUI runtime with an iPhone application. An iPhone application has to be Cocoa Touch based, simple as that. Having QtCore would be nice though, that would simplify porting business logic of existing Qt applications (but why should Nokia be interested in that?).
Future Nokia Phone applications should all be Qt (“mobile”) based, using Symbian as an invisible OS (or even something else). I hope Nokia will take that road and I would not understand if they don’t. The whole Trolltech aquisition would not make any sense otherwise.
+1 for QtCreator support!
The most unnerving part of C++ development for embedded devices is the rather unelegant toolchain. I think a complete Qt package for S60 “ready to go” would be a real competitive advantage. Google shows that having an elegant development environment definitely attracts developers and leads to many more applications
and BTW: Please update the MinGW toolchain, it’s pretty OLD
I actually think the problem is not on the Nokia/Qt Software side, but on the Apple side. I asked the same question at the devdays and got the answer that Apple has forbidden Qt Software to release Qt for the iPhone.
@Boudewijn
Explain more…
@jason: well I would have thought writing a GUI library for the iPhone is impossible without jailbreaking it or cooperation from Apple, which isn’t going to happen. They don’t need to ‘forbid’ it because Nokia can’t actually do it without their approval.
Btw this site’s CAPTCHA looks really weak. To solve it you could easily (well fairly easily) do:
1. Use colour filtering to only get the letters. They are the only black thing in the image.
2. The letters don’t connect or overlap, use connected component analysis to separate them.
3. Use the letter topology, height, area, etc to find the letters.
Very nice how Qt seems so integrated with the device. I hope the SDK gets ported to Linux, after all thats where most (not all) Qt developers live. About the hardware shown in the video,
A few questions – Are there any developer phones available, anything planned. Can you run Symbian on theN800 device ?
time to finally start to hack up the QWS->Wayland port, huh?
Hello,
How can i port QtExtended UI in parallel to S60 default UI? Any help? Do i have to make Qtopia.dll?
thank you
amru
Great work;) I got excited that now I could start learning Qt for S60 (was: learning Qt). Well, Qt is almost there, but not quite yet, I think. At least not for the S60 3.x devices (no touch).
Integration is better now. UI composed in code lays out quite well (if the widget is put on screen with showMaximized()), but Carbide/Qt Designer made UI does not, bottom widgets are always below the menu/screen. Something tries to stick to a size that’s not compatible…
Few questions:
– Will there be “real” S60 UI components? Setting lists and non-dialog notifications for example.
– How to bind select/OK key, and how to show it’s meaning in menu bar?
– Will there be a guide how to make S60 UI with Qt that doesn’t look like desktop GUI?
– Will Qt Designer be changed to be able to create working S60 UIs?
I would like to see a desktop Qt application changed to S60 3.x application (how to make embedded UI that is usable) – and vice versa (how to not use mobile features in PC). Unless I’m seriously missing something here?
@Kimmo:
“Setting lists and non-dialog notifications for example?”
We plan to make all our QDialogs behave and look as proper S60 dialogs or notifications. So for example a QMessageBox with a warning would look something like this http://blogs.s60.com/wp-content/oldposts/s60multimedia/signing3.jpg . We’re also looking into using proper native dialogs where it makes sense.
“How to bind select/OK key, and how to show it’s meaning in menu bar?”
We plan to extend or add a new api to better work with soft-keys too. Already we have a QMenu integration with the native avkon/s60 menus – but we see we need to do more to make it good.
“Will there be a guide how to make S60 UI with Qt that doesn’t look like desktop GUI?”
Well. Basically Qt apps should just look native by default.
“Will Qt Designer be changed to be able to create working S60 UIs?”
Unsure what our strategy are here at the moment. I mean it is not a problem to use it for S60 already, it’s just that you don’t get WYSIWYG. The DPI is wrong, the style is wrong, the font is wrong etc. Need to talk to the Berlin guys what we want to do
“I would like to see a desktop Qt application changed to S60 3.x application (how to make embedded UI that is usable) – and vice versa”
As I see it: It is basically a pipe dream to be able to make an application that was created for 1280×1024 desktop screens work perfectly out of the box on a 240×320 mobile display. But – it is absolutely possible to make it easy to share most of the code and .ui design between them. We’re looking into adding better “small-screen” support in Qt but haven’t decided on anything yet.
At the moment one suggestions would be to make two .ui files and tweak layouts, sizes and even hide parts in the smaller one. We do this in our own code for QFileDialog (both for S60 and Windows Mobile).
Thanks for the feedback.
Is it possible to use QT with Python (on S60) ?
If not, are there plans to get this working?
I think that this combination would be amazing.
Comments on this entry are closed.