Maurice Kalinowski

Nokia Qt SDK, what is in and what is not and…. What is it?

Published Tuesday April 27th, 2010
49 Comments on Nokia Qt SDK, what is in and what is not and…. What is it?
Posted in Build system, Maemo, Qt, QtCreator, QtMobility, Symbian

Hey everyone,

A release is only released as soon as you blog about it, a Troll once said. So here we go…

You probably have heard lots of buzz today about us releasing the Nokia Qt SDK. If not, find the announcements here  and here  as well as the download page here.

Still you might be wondering what this all is about. When I was asked to join this project, it has been described as “an evolution of the Qt SDK”, which still is the best way to do so. But let me go into details about the new elements contained in the package.

 

Targetting Nokia devices

Despite the classic Qt SDK for desktop, the Nokia Qt SDK aims at developing Qt applications for Nokia devices, which includes Symbian as well as Maemo (The N900 is still a Maemo device). Just like the Windows package, it includes a full toolchain with compilers and everything to create applications for both platforms. On the Symbian side we use a stripped version of a SDK for Qt development, while on Maemo we include Madde, the application development tool. The Qt versions included in the package are currently 4.6.2 for both operating systems, because 4.6.2 will be inside the upcoming PR1.2 on the N900 as well as it is the currently available stable Qt version on Symbian. This will change as soon as 4.7 will be mature and released. Furthermore we have added the Qt Mobility APIs 1.0 to use all the mobile features we support now.

 

Online, Offline installation, post-installation and updates

One of the seriously cool things about the Nokia Qt SDK is the ability to select the online installer. You probably know the basics of this from other products. Download the online installer, simply select what you want to install and only download those packages. In case you decide to add something else, simply select it in the maintenance tool (like targeting a new platform for your Qt application). Furthermore it includes an updating mechanism which will allow us to provide you frequent updates of the packages. This is especially helpful right now, as we published the beta version and want to provide bug fixes on a regular basis to you to verify that items have been resolved.

Qt Creator 2.0 beta

Qt Creator has been the choice as an IDE since day one due to the experience the developers have with creating a compelling IDE and adding the Nokia platforms as targets here. I will not go too much into the details of the upcoming 2.0 release, that is for the Qt Creator devs to do so, but extremely cool stuff has been added since the 1.3.1 release, including all aspects of the tool.

Qt Simulator

You might have seen some screenshots already like this one:

Qt Simulator

And especially those, who were with Qt/Embedded in the past might think that this is something alike qvfb, and actually it is. Well, it is for the user interface part, using shared memory to promote the content of windows to the simulator application, as well as using local sockets for IPC (this time actually QLocalSocket and not some linux implementation 😉 ).But still it allows much more, you can switch between several resolutions as well as device classes. But the most two cool features are

  • Qt Mobility API simulator backends
  • Scripting for Mobility APIs properties

We have created backends for all Qt Mobility APIs of the 1.0 release, which has happened today as well. It allows you to write applications targeting the simulator and check how it will behave if you eg. get out of battery, change your location, access the contacts etc etc… even before you need to start debugging on the device and run with your development computer plus phone through the city 🙂

And even more, you can script the values of the Mobility API properties, allowing you to dynamically change values and have your program respond properly to those changes. This is also very useful for QA purposes when you want to check edge-cases of your app as well. During development phasis we have written scripts which takes a jetpack tour through Berlin, you will find examples like this in the installer.

On-Device debugging for all Nokia platforms

This is what the Hackfest attendees liked the most. It could go into one of the Qt Creator features for the upcoming 2.0 release, but personally I think it is worth mentioning as a single item. Andre has been so kind to blog about it as well.

Documentation

Using APIs and tools stand and fall with a proper documentation. Thus lots of it has been added recently. This includes the new tools like the simulator, updated behavior for Qt Creator, on device debugging, as well as the API sets for Qt and the Qt Mobility APIs.

What’s next?

  • Opening our repositories for eg. the simulator as merging the Nokia Qt SDK specific Qt Creator changes. We would like to avoid fragmentation of our tools hence we will use one proper codeline.
  • Stabilizing all components of the Nokia Qt SDK.
  • Working on the final version.
  • We are trying to get the Mac version running as soon as possible, though we cannot give any promises right now.

One thing I would like to point out to every reader here: You can pretty easily see how much stuff we have included in the Nokia Qt SDK and now has been the time for us to release the beta to get public feedback and through that make the product rock-solid. Please be patient with us, it _is_ beta. However, I would like to encourage you to download it, play with it, stress-test it and send us your feedback.

Although I have tried to describe all the potential questions you might want to raise, there is probably much more in your minds. So drop your questions here or on the Forum Nokia landing page, we will try to reply as much as we can.

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

Posted in Build system, Maemo, Qt, QtCreator, QtMobility, Symbian

49 comments

gerwazy says:

Carbide will be eaten by QtCreator 2.0 🙂

scorp1us says:

Most phones with GPS do GPS tagging of photos, a la the ExIF header. What support does/will Qt have for ExIF?

scorp1us says:

And by extension, will the N8?

summel says:

to bad one can afaik currently only build qt4 apps for pr1.2… is there no way to compile my maemo app that i can use it NOW on my N900? the sdk for maemo already contains pr1.2… so i always get symbol lookup errors becuase trhe qt on the device is older then the one in the sdk 🙁

DavidB says:

It is a bit confusing. As I read it Qt SDK is for the desktop and Nokia Qt SDK is for mobile devices. Please clarify this and is the only difference the Mobility API

Alessandro says:

Let me underline one amazing quality of this new Nokia Qt SDK: Symbian development with Qt does not require the installation of 6 separate packages, anymore. The Nokia Qt SDK comes with everything needed. A years old demand is finally fullfilled.

I agree with DavidB: Will the Nokia Qt SDK at some point also come with Desktop Qt versions? Would make sense.

Roma says:

AFAIK Qt online installer doesn’t work yet. Moreover Nokia cannot say when it will finally released.

http://discussion.forum.nokia.com/forum/forumdisplay.php?f=235
http://developer.symbian.org/forum/showthread.php?t=5242

Beta of the installer which was released couple of months ago didn’t work at all.

doc says:

As a Qt newbie I’m also confused, do I need this *and* the desktop sdk?

Eike Ziller says:

@doc: @DavidB: I’ll try to summarize…

“Nokia Qt SDK” == Qt Simulator (i.e. desktop based) + Qt for Symbian (incl. all necessary tool chains) + Qt for Maemo (incl. all necessary tool chains) + Mobility API + Qt Creator

“Qt SDK” == Qt for a desktop platform + Qt Creator

So if you want to
a) Develop for Mobile only: Install the “Nokia Qt SDK”.
b) Develop for Desktop only: Install the “Qt SDK”.
c) Develop for Mobile and Desktop: Install the “Nokia Qt SDK” and a Qt-only package for a desktop platform. Reason is to avoid installing multiple (probably different versions of) Qt Creator, and I’d recommend to use the Qt Creator version that is shipped with the “Nokia Qt SDK”.

It would definitely make sense to at the very least merge the installers, such that you are able to also install mobile components from the “desktop SDK” and desktop components from the “mobile SDK”.

Stuk says:

Great!

Alexey says:

When linux version will be able to build for Symbian ?

doc says:

@Eike Ziller: thank you very much for the clarification. So if I am interested in (c) and already have Qt Creator/SDK installed should I remove it before installing Nokia Qt SDK? Also, is “merging the installers” something that could be easily done? Are just scripts?

TheBootroo says:

i have a big question !

can we use QContacts, QMultimedia and QMessaging in a Desktop application ?

because they are the three API i was most waiting for but not specially for Maemo or Symbian !

HELP

Jochen Becher says:

Does Nokia Qt SDK contain MADDE 0.6.14 using Qt 4.5.3 or is it updated to Qt 4.6.2?

It is quite difficult to create good Maemo application using MADDE 0.6.14 because so many Maemo specific features are still missing in Qt 4.5.3 (e.g. banners, window busy state etc).

Rontti says:

MADDE version is not relevant, but yes, there is qt 4.6.2 support, so happy hacking 🙂

Eike Ziller says:

@doc: You can keep your Qt SDK installation. Just make sure that you start the Qt Creator that is installed by the Nokia Qt SDK, because that is a newer version.

Also, for a more complete listing of what the different SDK versions contain / what is supported by what, please have a look at the table here: http://qt.nokia.com/products/qt-for-mobile-platforms#qtfornokia

Daniel Molkentin says:

@Roma: You seem to confuse the Qt smart installer (which installs Qt on devices along with an application built with Qt if the device does not have Qt installed) with the Online Installer for the Nokia Qt SDK (which will download only those parts of the SDK that you actually need).

@TheBootroo: I understand that some of the Mobility APIs also have backends for desktop platforms, although they are not a top priority at the moment.

porilainen says:

Trolls – bringing Nokia out of the muck.

Grego says:

So Nokia Qt SDK will run on linux to develop for Maemo.
Will the simulator also run on linux for Symbian devices/resolutions?
Is targeting Symbian on Linux development host, including on device debugging in the road-map?

hamishwillee says:

Very nice. How was the Perl dependency removed on Symbian toolchain, or where you somehow able to include it?

Alessandro says:

@hamishwillee: A Perl dependency is still there. Perl is included in the Nokia Qt SDK. However, it is not ActivePerl but Strawberry Perl 5.8.9 😉 Building Qt projects for Symbian seems to work fine with Strawberry Perl.

Stuk says:

Qt SDK haven’t the complete Qt mobility library, for example QMessage.h there isn,t where i can dowload it? (and other missing library about mobility)

Zs says:

What symbian version is supported ? I can’t find any reference, is it possible to run Qt apps in S60 3rd edition ?

Alessandro says:

@Zs: Qt (and qt based apps) work on S60 3rd ed FP1/FP2, 5th ed (aka Symbian^1) and upwards. See: http://doc.qt.nokia.com/4.6/platform-notes-symbian.html

ståle says:

Hi, i tested it out and im wondering how i can include a “thirdparty” lib to my qt app on maemo?
I noticed that the qmake-maemo target ignores included libs. I have the library installed in scratchbox, is it possible to include that?
The thirdparty lib im using is thrift, ive gotten my app compiled on scratchbox, but it would be really nice to use this new tool instead of scratchbox. thanks.

Zs says:

@Alessandro : thanks, i haven’t noticed that. Unfortunately this means, that I can’t test it on my N80, which is S60 3rd ed, without feature pack. Do you think it’s feasible to compile Qt for that device ?

Markus Rathgeb says:

Use “Nokia Qt SDK” to develop applications for Symbian S60 5th on linux

I played a little bit with the SDK and the other tools and perhaps someone other can test that (I build a few examples and they work on my phone):

http://lizardo.wordpress.com/2010/02/18/installing-qt-for-symbian-sdk-4-6-2-on-linux/#comment-162

hamishwillee says:

Command line builds work for the device target using the provided windows command prompt (EPOCROOT correctly set, and make debug-gcce, make release, make SIS all do the right thing. However its not obvious how you would build for the Simulator on the command line – is this “supported? (and how do you then run the file?

Markus Rathgeb says:

Windows command prompt on linux?
I blieve we are talking not about the same thing.
I am using the “Nokia Qt SDK” under linux to build Symbian apps (not using the simulator) with QtCreator (not on command line).

Because of the lack of an integrated build environment for symbian on the linux package, I am interested, if the above steps are working for other people, too.

Eike Ziller says:

@hamishwillee:

The “Simulator” is just a special Qt version that you need to use to compile your application. Just take the qmake that comes with the simulator Qt (SimulatorQtbin). After compiling, just start the resulting app, as you’d do with a normal Desktop build.

codenode says:

First, I godda say, great work (again) guys. I installed the SDK on my XP Machine today, and already have my own HelloWorld App Running in the Simulator.

Also it seems not so easy, to get the examples to run in the Simulator. I tried with the Diagramscene example, but couldn’t start it, I get an “exited with code -1073741511”, which seems to be an DLL/PATH Issue under Windows.

Another Question I have, is, where is an easy access to the toolchain you are using to build for Maemo/Symbian. I’d like to compile boost for Maemo and Symbian, I think you use a GCC/MinGW, so where resides this exactly? I already compiled boost with the MinGW Version(4.4) that shipped with the 4.6 release.

Alexei Sheplyakov says:

Linux (64-bit) installer segfaults after choosing the installation directory. Here is a backtrace:

(gdb) bt
#0 0x00000000005beab3 in KDSysInfo::Volume::availableSpace() const ()
#1 0x0000000000440dca in QInstaller::ReadyForInstallationPage::initializePage() ()
#2 0x0000000000d9e22d in QWizardPrivate::switchToPage(int, QWizardPrivate::Direction) ()
#3 0x0000000000d9e49f in QWizard::next() ()
#4 0x0000000000d9ee83 in QWizard::qt_metacall(QMetaObject::Call, int, void**) ()
#5 0x000000000048e875 in QInstaller::Gui::qt_metacall(QMetaObject::Call, int, void**) ()
#6 0x00000000010b6641 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
#7 0x0000000000eda422 in QAbstractButton::clicked(bool) ()
#8 0x0000000000c67e7b in QAbstractButtonPrivate::emitClicked() ()
#9 0x0000000000c68ed5 in QAbstractButtonPrivate::click() ()
#10 0x0000000000c6912b in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
#11 0x00000000009dc14b in QWidget::event(QEvent*) ()
#12 0x0000000000c6828f in QAbstractButton::event(QEvent*) ()
#13 0x0000000000cfa9ce in QPushButton::event(QEvent*) ()
#14 0x000000000098b71f in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
#15 0x0000000000990f16 in QApplication::notify(QObject*, QEvent*) ()
#16 0x00000000010a3ce4 in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
#17 0x0000000000991e10 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) ()
#18 0x00000000009fc4aa in QETWidget::translateMouseEvent(_XEvent const*) ()
#19 0x00000000009fb25b in QApplication::x11ProcessEvent(_XEvent*) ()
#20 0x0000000000a20ea2 in x11EventSourceDispatch(_GSource*, int (*)(void*), void*) ()
#21 0x00007ffff5c756c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#22 0x00007ffff5c79538 in ?? () from /lib/libglib-2.0.so.0
#23 0x00007ffff5c796ec in g_main_context_iteration () from /lib/libglib-2.0.so.0
#24 0x00000000010c57a5 in QEventDispatcherGlib::processEvents(QFlags) ()
#25 0x0000000000a20cbf in QGuiEventDispatcherGlib::processEvents(QFlags) ()
#26 0x00000000010a2de5 in QEventLoop::processEvents(QFlags) ()
#27 0x00000000010a31cd in QEventLoop::exec(QFlags) ()
#28 0x00000000010a4b7a in QCoreApplication::exec() ()
#29 0x000000000041899b in main ()

Alexei Sheplyakov says:

Apparently the installer tries to parse the /etc/mtab file:

3192 open(“/etc/mtab”, O_RDONLY) = 9
3192 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
3192 fstat(9, {st_mode=S_IFREG|0444, st_size=0, …}) = 0
3192 fstat(9, {st_mode=S_IFREG|0444, st_size=0, …}) = 0
3192 fstat(9, {st_mode=S_IFREG|0444, st_size=0, …}) = 0
3192 close(9) = 0
3192 — SIGSEGV (Segmentation fault) @ 0 (0) —
3193 +++ killed by SIGSEGV +++

(complete strace(1) log is available at http://varg.org.ua:8888/nokia_qt_sdk_strace.log.gz)

But it doesn’t read a single byte, and closes the file immediately.

$ file /etc/mtab
/etc/mtab: symbolic link to `/proc/mounts’

And all files in procfs have zero size (according to stat(2)), but can contain some data:

$ wc -l /proc/mounts
35 /proc/mounts

Perhaps the installer is not smart enough to handle this situation.

Alexei Sheplyakov says:

Note: /etc/mtab is a symlink to /proc/mounts on many Linux systems, so it would be nice to fix the above mentioned issue. Thanks in advance 🙂

codenode says:

Just have restartet my HelloWorld Project from yesterday evening, and I can’t get any changes in the UI to run.
I tried rebuilding, deleting all files in $project-simulator/debug etc. its not working.
Newly added Widgets aren’t shown and moving the current ones is also not beeing shown/updated in the simulator.
It builds fine, no compilation errors, it just shows the old UI Version in the Simulator, code changes seem to take place.

If I add a new button and a slot for it, I also do get the error “QMetaObject::connectSlotsByName: No matching signal for on_btn_delete_clicked()” at runtime.

Derail says:

codenode, I have the same trouble.
My way to avoid it is that:
Projects -> Qt Simulator -> Build directory — remove “-build-simulator” from path.
So there will be only one directory for your project.

codenode says:

@Derail: My Problem was that it didn’t generate a new ui_mainwindow.h for the project somehow, deleting ui_mainwindow.h solved this problem.
Also today I did not have a Problem with that.

I’m currently trying arround with the sensors, but they seem not work, at least I can’t find an example, and this code isn’t running:
compass = new QtMobility::QCompass(this);
if(!compass->connectToBackend())//there seems to be no backend in the simulator
ui->spin_y->setValue(4.0);
compass->start();

Also tried different combinations of the methods. Also with accelerator.

David says:

Hi

I tried the beta and had no lock with the simulator (deploying on the real N900 worked, but I still wait for the PR 1.2 update, so every application crashes because of the wrong qt version on the device).

The Simulator, however, didn’t work at all for me. I tried several examples, and mostly I’m getting an output like:

Starting /home/david/Projects/Simple_Qt_Animation_Example_v1_0_en/QtImageViewer/QtImageViewer-build-simulator/QtImageViewer…
The program has unexpectedly finished.
/home/david/Projects/Simple_Qt_Animation_Example_v1_0_en/QtImageViewer/QtImageViewer-build-simulator/QtImageViewer exited with code 0

And no simulator window comes up. I can however start the executable in the simulate-build folder and then a simulator windows comes up, but it is completely unresponsive. Also modifying any simulator properties don’t trigger the appropriate display reaction.

I’m on openSUSE 11.2, installation worked fine. I wonder if I should write a bug report? Anyone else with the same kind of problems?

Cheers,

David

mkalinow says:

@David, please do file a bug report, so that we are at least aware of this issue and if someone else recognizes this, he can mention it there as well.

In terms of unresponsive are you referring to it using CPU or something different?

David says:

@mkalinow

Alright, I created a bug report (http://bugreports.qt.nokia.com/browse/QTSIM-10)

by “unresponsive” I meant, that I exepected, for example, that the connectivity icon in the simulator screen changes, if I change the connectivity from 3G to WLAN in the simulator properties dialog. Also I exepected the simulator screen to react on mouse clicks in the title bar. Maybe that was a wrong assumption and only the application’s window is supposed to react on clicks in the simulator…

Fab1 says:

Hi,
When will the maemo simulator support OpenGL ES? Is it planned at all?
Thanks

mkalinow says:

@David,
ok, you are right then. The title bar is non-functional right now, it shall give you more an impression of the space you have when you create your user interface. However, this suggestion keeps popping up, so we might consider expanding this functionality as well.

@Fab1
It is planned, but we have no concrete scheduling for it yet. Having this feature work cross-platform on all development hosts is a tedious thing to do, so we need to check on possible ways to achieve this first.

Sergey B. says:

Hello!
Does Qt simulator support Maemo style?
http://img517.imageshack.us/img517/8968/28679638.png

Warren says:

Ubuntu 7.04? Really? Why a 3-year old version that’s been unsupported for 1.5 years?

I could understand 8.04 LTS, since at least that is still supported, and 10.04 LTS is pretty recent…

I hope you’ll be supporting 10.04 LTS in the next release?

wjbaird says:

I just installed Ubuntu 10.04 inside VirtualBox 3.1.6, and the SDK seems to work fine. Haven’t tried writing my own code with it, but I compiled several of the samples and they worked fine.

Only noticed two quirks:
1: I had to do ‘apt-get install g++’ before the build would work
2: when I ran the simulator for the first time, the simulator window appeared immediately behind the control window (the one titled “QT Simulator”, where you can control the device, and size, etc.) – I thought it wasn’t working until I changed the zoom factor and the simulator appeared.

Good job – looks like a nice environment… I haven’t written C++ code in a while, but I might give it a shot again…

neob says:

I’ve installed nokia qt sdk beta and compiled my application with it. When i try to run the application on nokia 5320 from qt creator i get ” General OS-related error”. Do i have to install s60 3rd edition sdk separately or is it supposed to work out of the box?

Alan says:

Hey, just had a chance to check this out, looks great! The scaling thing is a nice touch in the simulator.

I can’t seem to get it working the same way on Mac, is this in the works?

Ffejery says:

@ståle:
Yes, it is possible, but (maybe?) not supported. If we could get an official statement from the Trolls about what the plans are for third-party library support, I’d appreciate it; I know that the point of recent initiatives like Qt Mobility is to reduce external/platform-specific dependencies, but it would be nice if it wasn’t painful to do so if needed.
Anyhow, to use a third-party library with the SDK, you’ll need to copy the library and associated headers into the cross-compiler’s minimal rootfs prefix. Currently, for me, that is at $SDKPREFIX/NokiaQtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-1014-slim/usr/{lib,include}. Once they’re there, the SDK should pick them up fine. Does anyone know why the compiler won’t find libraries elsewhere — even when it’s pointed directly at them with -I and -L switches?

Artem says:

How can I try OpenGl examples? There are next errors in buil process:

WARNING: Can’t find following headers in System Include Path

What should I configure for success compilation? This files (gl.h, glu.h and other) are exist in SDK folders, but i don’t find any configuration options in QtCreator to change any pathes to include files.

Commenting closed.

Get started today with Qt Download now