Qt Simulator is going public

Published Monday May 31st, 2010
21 Comments on Qt Simulator is going public
Posted in Qt, Qt Simulator

Qt Simulator running the photoviewer Qml demo

I’m Christian Kamm, one of the developers responsible for the Qt Simulator that celebrated its debut with the release of the Nokia Qt SDK beta last month. In this article, I will introduce this new tool, explain how it works and how to get involved.

Qt Simulator is a fast and lightweight simulator for Qt applications intended to run on Nokia devices. As such, it should be your first target when developing a Qt application for Symbian or Maemo/Meego devices. The quick turnaround time should allow you to find, debug and fix a lot of issues before deploying the application to a real device. To give it a spin, grab the Nokia Qt SDK 1.0 beta from Forum Nokia.

The idea behind the Simulator is simple: Make an application look and behave as if it was run on a device, without incurring the overhead of actually emulating the hardware, the operating system or even compiling for a different platform. Applications destined to run inside Qt Simulator link against versions of Qt and Qt Mobility which have been modified to communicate to the Simulator application and behave like they would on a device. We call these Simulator Qt and Simulator Mobility to distinguish them from the regular desktop versions.

For instance, the Simulator Qt does not create native top level windows. Instead, it draws the application’s windows to a shared memory area and lets the Simulator use that to display the contents to the user. In return any user input is sent back from Qt Simulator to the corresponding client application and processed there.

Qt Simulator with control window

Another core aspect is Qt Mobility simulation. Take the Contacts API, for example: The Simulator manages its own contact list (it has a few stub contacts at startup, you can import vCard files into it) and whenever a client application uses the Contacts API, it operates on the simulated address book. This allows straightforward testing of applications using this API without fear of accidentally messing up your desktop computer’s address book. The other components of Qt Mobility 10.1, like system info, location, messaging, etc. are exposed in a similar way.

To enable testing complex situations, like changing GPS data, the battery running out or turning the device upside down, Qt Simulator comes with a JavaScript interface to many of its components.

We hope this tool to be useful to everyone developing applications for mobile devices and are eager to get feedback and bug reports! You can also go a step further and contribute directly: The sources have been released under the same licenses as Qt Creator’s, commercial or LGPL 2.1, and the repositories are available at

Qt Simulator
Remote Control Widget
Simulator Qt
Simulator Mobility

More information on how to get started can be found on the Qt Simulator wiki.

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Qt, Qt Simulator

21 comments

DavidB says:

Perhaps I over looked it but what is the difference between the regular version (500+ megs) and the online version (100+ megs)

Thanks
David

davidB says:

Sorry for the hasty post about the difference in the on line and regular versions. I found the info at the bottom of the install page-

Each installer is available in offline and online versions. The offline installer includes the entire Nokia Qt SDK, while the online version downloads the software when run on your computer.

The official Linux OS is stated as 7.04. Hope it works on newer ones then this as Ubuntu ended support for this version some time ago I think.

Tim says:

Wow, that looks so much better than the incredibly slow Android emulator! (Same for Qt Creator vs Eclipse, and C++ vs Java).

Still, I’m dubious how much impact this can all make. Nokia is very very late to the game…

AC says:

You REALLY have to figure out how to name things ๐Ÿ™‚ !
“Qt Simulator”, and “Simulator Qt” .. please chasten the marketing droid in charge of that !

suy says:

Thanks a lot for making this open source. I’m quite confident that I will see it packaged by Linux distributions, which will be quite convenient for Linux users. I think this is the way to go, and that Nokia might be a little bit behind that the competition in making high end phones, but is definitely winning in being truly open, and that this will pay off in the long term.

achipa says:

IMHO The biggest advantage of this approach is also it’s biggest problem. By not relying or running the actual OS or it’s servies, it is running dangerously close to becoming just a skin for a Qt top level widget. You cannot see how things really look like as it does not use the Qt styling of the device. If there is a way to pull up the menu, I didn’t find it, and it misses the ability to use system services that are not wrapped by QtMobility (which neutralizes the advantage of Qt being able to use existing/native Symbian or Maemo libraries/code).

John Ryland says:

I might have missed something, but what’s the difference between this and QVFb? QVFb was released with Qt/Embedded 2.2 or earlier (like 10 years ago) and even had skins similar to this in Qt 2.3. It used shared memory for the display and the applications running in it didn’t need to be cross-compiled either. What exactly is new here?

@John Ryland

The simulator has much wider scope than qvfb; e.g. if you look at the second screenshot posted, you can see that there’s options for simulating lots of the data a Qt app on a phone might want to access.

Tam Hanna says:

Hi Folks,
just posted you to my blog:
http://tamss60.tamoggemon.com/2010/06/01/qt-simulator-released/

However, the question remains: what do you do if your app contains a few tiny but unreplacable native code bits (e.g. screen rotation lock)? An article explaining that would be nice!

Tam

P.S. I don’t think I will ever see comments here – so please send me an email folks!

It’s a real good beginning. Can’t use it as it doesn’t support OpenGL ES yet. Hopefully it will at some future date. PowerVR from Imagination has an emulator, maybe you could work with them on it. Would be nice. Thanks for getting this far.

John Ryland says:

Rohan,

Thanks. I think I missed the point but I get it now. Does sound cool.

It’s really a complete and unified simulation solution.

I remember now how Qtopia was a bit hobbled together with having scripts to start up various processes for qvfb, phonesim, qpe etc and setup a dummy HOME with a set of test data, and manually having to send qcop messages to simulate various device events. The simulator sounds like it nicely integrates all that as something easy to use.

Truf says:

As i can see it doesn’t simulate platform look and fiil. For example those Symbian status and contol panes as we can see on picture #2.
Is that photoshopped image or i miss something?

Vladimir says:

@Christian. Is it possible to simulate low storage space and low memory?

Niels says:

Ubuntu 7.04 is just the minimum version for the Nokia Qt SDK to work. Everything newer also works (and not only Ubuntu of course, we tested it on Debian, Fedora and Archlinux as well).

Christian Kamm says:

@achipa

You’re right, if you’re writing a highly device specific application and need to access platform specific APIs, the Simulator won’t help you. However, the majority of applications should be ok with using Qt and Qt Mobility – that’s the case that the new Simulator was developed for. These are also the applications that will work across Qt equipped devices without a large porting effort.

@Truf

The platform specific menus the Simulator shows are only placeholders. You can access the application’s menu from the ‘Application’ tab in the Simulator UI.

@Vladimir

While you can change the amount of remaining on-device storage that the SystemInfo Mobility API reports, it is not possible to simulate the effects of low storage or memory at the moment.

Wiyono says:

@Christian. You mentioned all the mobility libraries are also available and emulated appropriately by the Qt Simulator. However I don’t seem to be able to use messaging API (ie. QMessageService), since I get linkage error of “cannot find -lQtMessagingd”. I’ve added “messaging” to MOBILITY variable in the qmake file and added mobility to CONFIG. And anyway, I don’t seem to find supposedly libQtMessaging.a library file under C:NokiaQtSDK_1_0_BetaSimulatorQtMobilitymingwlib. Could you clarify?

Christian Kamm says:

@Wiyono. There was a bug that made Qt Messaging not work on mingw (http://bugreports.qt.nokia.com/browse/QTSIM-2). It’ll be fixed in the next release.

Justin says:

@Tim “Still, Iโ€™m dubious how much impact this can all make. Nokia is very very late to the gameโ€ฆ”

Nokia is still the #1 phone manufacturer worldwide so I think they still have a shot…
http://www.electronista.com/articles/10/04/30/rim.overtakes.sony.ericsson.nokia.shrinks/

Guillaume says:

Great ! But how do we activate GPS or tell the phone to take the new settings into account ? With the Lightmaps demo, when I change the location settings nothing happens, the view stays still. Thanks

Christian Kamm says:

@Guillaume: The lightmaps demo works for me: When I change the data in the Location tab of the Simulator control window, the displayed map location changes accordingly. You have to finish editing (hit enter or move focus away) for the Simulator to send the updated data to the client though.

If this still doesn’t work right for you, please make a ticket at: http://bugreports.qt.nokia.com/browse/QTSIM

kjiang says:

what is the limitation or known issues of QT simulator?

Commenting closed.

Get started today with Qt Download now