Showing posts with label Qt for Symbian Development. Show all posts
Showing posts with label Qt for Symbian Development. Show all posts

Tuesday, March 30, 2010

How to Set Qt Application Icon and Title in Symbian S60

Set Symbian S60 Application Title/Caption:
  1. Alter project.loc file as necessary. Backup as project.loc.manual for future use (or if overwritten).
  2. In Qt Creator, go to Projects panel. Remove QMake from Build Steps.
  3. You can run QMake manually. Afterwards, replace the project.loc file with the one you backed up.
Set Symbian S60 Application Icon (in Launcher and in Task Manager):
  1. Create icon using Inkscape or Adobe Illustrator. If using Adobe Illustrator, export directly to SVG-Tiny. Otherwise, export to SVG (Basic) format.
  2. You need to convert SVG to SVG-Tiny format. Go to <S60 SDK>\S60tools\svg2svgt\installer and run the installer (SVG2SVGTConverter.exe) using the following settings:
    - Compatibility: Windows XP Service Pack 3
    - Run as administrator
    Use the installed SVGT Tool to convert your SVG to SVG-Tiny format. Refer to this Forum Nokia Wiki article for more information.
  3. Add the following to your project.pro : (make sure to use the SVG-Tiny file)
    ICON = project-icon.svg
After changing your application icon, you may need to restart the phone to clear the icon cache so the updated icon will be shown. This problem happens at least in Nokia E71.

For detailed Symbian development resource, check out Developing Software for Symbian OS 2nd Edition (Symbian Press).

Update: Starting from Qt 4.7.2 (which is "currently unusable" for Symbian applications, since Ovi Store doesn't yet accept Qt 4.7 apps), QTBUG-13917 provides a better way:
If developer specifies "CONFIG += localize_deployment" in .pro file, the generated .loc and .pkg will now use translatable strings from .ts files defined in TRANSLATIONS. The .ts files must have an underscore and Qt language code at the end of the filename body to be compatible with deployment localization. E.g. myapp_en.ts.
Running lupdate will generate these entries into .ts files:
  • Application short caption
  • Application long caption
  • Package name
  • Smart installer package name

Debugging on Symbian S60 Nokia device with Qt Creator

Qt Creator 1.3 and later provides support for Symbian S60 development (especially Qt apps, of course).

In addition to building for WINSCW (Symbian S60 Emulator) and GCCE (Symbian ARM target), Qt Creator also provides support for running and debugging Qt applications right on the Symbian S60 / Nokia device.

To debug/run Qt apps on Symbian S60 device:
  1. Setup the Qt for Symbian development environment properly.
  2. Install App TRK on your Nokia / Symbian S60 device.
  3. Run App TRK and if configure it as USB. (Qt Creator currently only supports USB)
  4. Connect your Nokia device to your computer. (make sure Nokia Ovi Suite / PC Suite is running)
  5. Configure Qt Creator project to build using GCCE.
  6. Configure Qt Creator project to run using "Symbian device".
  7. Run/Debug your app from Qt Creator!

Troubleshooting


You may get stuck with the message "Waiting for App TRK to start on COMxx" during Run/Debug from Qt Creator:


The cause is because Qt Creator up to version 1.3.1 doesn't work well with high port numbers. This should be resolved in Qt Creator 1.3.2, but in the meantime there is a workaround:

  1. Go to System -> Advanced Properties -> Device Manager.
  2. Expand Ports, and double-click your Nokia device to bring the Properties dialog.
  3. Click Port Settings tab. Click Advanced. And set the port to something to (COM1 to COM4 if possible).
  4. Click OK on all dialogs.
  5. Now disconnect and reconnect your Nokia/Symbian device. And you should be good to go.
For more information about Qt C++ development, check out C++ GUI Programming with Qt 4 (2nd Edition).

To learn Symbian C++ development, I recommend Porting to the Symbian Platform: Open Mobile Development in C/C++ (Symbian Press).

References:

Installing Qt Mobility 1.0.0-beta1 on Symbian S60 SDK

Qt Mobility SDK installation has been improved a lot since the previous Technology Preview.

Be aware that previous Qt Mobility installation will likely conflict with the new Qt Mobility library. I also had this problem, then gave up and reinstall my Symbian S60 SDK. :-P So, if you try and not succeed, before you begin, clean your system from:
  • Qt Mobility
  • Qt for Symbian
  • Symbian S60 SDK
  • Make sure to cleanly delete the directories of the above
You can leave ADT / Carbide.c++ and Qt Creator installed.

Then reinstall Qt for Symbian development environment: (detailed instructions here)
  1. Reinstall Symbian S60 SDK.
  2. Reinstall Open C/C++ Plugin for Symbian S60 SDK.
  3. Reinstall Qt for Symbian.
Unlike previous Qt Mobility Tech Preview, Qt Mobility for Symbian 1.0.0-beta1 is now in a separate distribution. You don't need to download the regular Qt Mobility distribution if you just want to develop for Symbian.

Now you can unpack Qt Mobility for Symbian distribution to a folder and install it:
  1. Download Qt Mobility for Symbian here. The distribution file is named like this: qt-mobility-symbian-*.zip. Unpack it to a folder.
  2. Install to Symbian SDK. Installing the mobility libraries to your Symbian SDK happens by extracting the 'qt-mobility-1.0.0-beta1-libraries<S60SDK>.zip' file to your Symbian SDK.
  3. Install Qt Mobility to Qt SDK. Copy the mobility.prf file to your QtDIR/mkspecs/features directory
  4. Optional: Install to Nokia/Symbian S60 device. Install qt-mobility-1.0.0-beta1.sis to your device using Bluetooth, USB, or Nokia Ovi Suite / PC Suite.
Run Qt Creator and you should be able to build your Qt Mobility app with the new Qt Mobility for Symbian Beta.

To learn more about Symbian development, I recommend Porting to the Symbian Platform: Open Mobile Development in C/C++ (Symbian Press).

Thursday, January 28, 2010

Qt Mobility for Symbian Problems & Solutions

This is mixed log of my troubleshooting attempts while developing using Qt Mobility for Symbian.
  1. Ensure WINSCW for Command Line
  2. Install Qt For Symbian
  3. Install Qt Mobility for Symbian
  4. Qt Mobility libraries:
  5. In C:\QtMobility\symbian\install_to_sdk\Qt_Mobility_tech_preview_libraries.zip
  6. Extract to C:\Symbian\9.4\S60_5th_Edition_SDK_v1.0_2
  7. Qt Mobility includes:
  8. Launch Qt for Symbian Command Prompt
  9. Make sure Perl is still in path (perl -v)

This seems wrong: "Rather than building the libraries it is also possible to deploy a prebuilt set of libraries. Under the c:\QtMobility\%DISTNAME%\symbian directory there contains Mobility_tech_preview_libraries.zip. Extract this into the SDK root directory to add the necessary libraries. If you have multiple SDKs then repeat this step for each of them."
because it only installs the binary lib files but not the header files, so we still need to at least "configure" Qt Mobility.
That should create "qcontact.h" etc. on C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include
"make" is not needed
Rebuild debug helper -- masih error
How to Build & Run:
Build configuration: using Symbian, compiler: WINSCW
Run configuration: Symbian emulator

What is WINSCW ?
WINSCW is Symbian emulator. The WINSCW compiler builds Symbian programs that can be run or debugged on the S60 Emulator.
Symbian Emulator only accepts WINSCW built programs, it cannot run apps built using GCCE, ARM9E, ARMV6.
What is CodeWarrior?
It's the former, expensive IDE for Symbian. Now replaced by Carbide.c++ which is free.
What is GCCE?
From Forum Nokia Wiki
GCCE (GNU Compiler Collection for Embedded) is an ARM-based compiler used in Symbian OS 9. Before Symbian OS 9, GCC is used to compile for the target. It is intended for building third party applications. It cannot be used to compile the full operating system.
What is RVCT-ARMV6?
It's the proprietary compiler from ARM. It is needed to compile Qt (for now), and for debugging Symbian apps using Qt Creator.
RVCT vs GCCE: http://discussion.forum.nokia.com/forum/showthread.php?t=109299
To run using Emulator:
1. Shutdown the Emulator first (make sure it's not running)
2. Then run app

Error during installation of Qt_Mobility_tech_preview.sis to Emulator:
Certificate error. Contact the application supplier.

Error during Emulator (but ignorable):
C:\Qt\4.6.1-symbian\examples\animation\animatedtiles>make run
call /S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/release/winscw/udeb/animatedtiles.
exe
Terminate batch job (Y/N)? n

Unhandled exception filter called from program C:\S60\devices\S60_3rd_FP2_SDK_v1
.1\epoc32\tools\make.exe
ExceptionCode = c0000005
ExceptionFlags = 0
ExceptionAddress = 416569
Access violation: write operation at address 428
Solution --> Set Emulator compatibility to Windows XP SP3

Error during make run:
C:\Qt\4.6.1-symbian\examples\animation\animatedtiles>make run
call /S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/release/winscw/udeb/animatedtiles.exe
C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\tools\make.exe: [run] Error -1073741819 (ignored)

I got this error during Clean:
make[2]: \S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\MESSAGE-MERGE_0XE6F7F146\WINSCW\MESSAGE-MERGE_0XE6F7F146.WINSCW: No such file or directory
make[2]: *** No rule to make target `\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\MESSAGE-MERGE_0XE6F7F146\WINSCW\MESSAGE-MERGE_0XE6F7F146.WINSCW'. Stop.
make[1]: *** [CLEANMESSAGE-MERGE_0XE6F7F146] Error 2

I got this error during Build (Symbian Debug):
mwldsym2.exe: Invalid object 'main.o': unknown machine (0x457f)
make[1]: Leaving directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
make -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\WINSCW.make" FINAL CFG=UDEB VERBOSE=-s
Errors caused tool to abort.
make[2]: *** [\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\WINSCW\udeb\message_merge.exe] Error 1
make[1]: *** [TARGETMESSAGE-MERGE_0XE6F7F146] Error 2
Solution --> http://discussion.forum.nokia.com/forum/showthread.php?t=105186
1) delete all *.o files manually (for some reason "clean project" is not enough)
2) rebuild.
In my case it helped. Problem arose because I created hole project on Linux ("normal" qt) and then copied files (including *.o) to windows machine to play with Carbide.

I got this error during Run:
Starting C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\message-merge.exe...
The process could not be started!
--> It means the file does not exist (the Build process fails)

Building Symbian Release + GCCE gives .. last words:
make -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\GCCE.make" TARGET CFG=UREL VERBOSE=-s
make[1]: Entering directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
make -s -C \Users\ceefour\Documents\qtcontest\message-merge -f "MAKEFILE_0XE6F7F146.MK" TO_ROOT=..\..\..\..\.. EPOCBLD=..\..\..\..\..\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\MAKEFILE_0XE6F7F146\GCCE TO_BLDINF=..\..\..\..\..\Users\ceefour\Documents\qtcontest\message-merge PLATFORM=GCCE CFG=UREL BLD
make -s -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\MESSAGE-MERGE_0XE6F7F146\GCCE\MESSAGE-MERGE_0XE6F7F146.GCCE" UREL
main.cpp
templatesdialog.cpp
templateeditdialog.cpp
mainwizard.cpp
messagemerger.cpp
moc_templatesdialog.cpp
moc_templateeditdialog.cpp
moc_mainwizard.cpp
make[1]: Leaving directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
make -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\GCCE.make" FINAL CFG=UREL VERBOSE=-s
make[1]: Entering directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
make -s -C \Users\ceefour\Documents\qtcontest\message-merge -f "MAKEFILE_0XE6F7F146.MK" TO_ROOT=..\..\..\..\.. EPOCBLD=..\..\..\..\..\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\MAKEFILE_0XE6F7F146\GCCE TO_BLDINF=..\..\..\..\..\Users\ceefour\Documents\qtcontest\message-merge PLATFORM=GCCE CFG=UREL FINAL
make[1]: Leaving directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\tools\make.exe: Leaving directory `C:/Users/ceefour/Documents/qtcontest/message-merge'
Exited with code 0.


Prepare the Emulator with Qt :
File -> Open. Install qt_demos.sis
Error: Request application access not granted.

Qt looks awful in E71
Solution --> I was using Dark Personal, switching to Grey Steel works fine.

Build successful (Debug WINSCW), but Error during Run
Starting C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\message-merge.exe...
The process could not be started!
Cause: Project name contains '-'. Output filename is message_merge.exe, but tried to run message-merge.exe. Seems like Symbian does not support dash in app names.
Solution: Either
Rename project using underscore "_" instead of dash "-", or
Run message_merge.exe manually

Trouble: App crashes when accessing Qt Mobility / Symbian features
Cause: SYMBIAN.CAPABILITY is not properly specified in the .pro file
See: http://discussion.forum.nokia.com/forum/showthread.php?t=158729
http://discussion.forum.nokia.com/forum/showthread.php?t=90428
After doing this, during installation, it shows dialog for ReadUserData and WriteUserData. So the capability is requested well.
But --> Problem persists! :-(

Trouble: Required application access not granted.
When installing samplephonebook.sis, E71 says "Required application access not granted."
See: http://mobile.antonypranata.com/2006/06/16/interpreting-signing-error-messages-in-s60-3rd-edition/
Hint: Check that your certificate can be used to sign all capabilities needed by your application. For example, if you use self-signed certificate, you can only sign basic set capabilities, i.e. NetworkServices, ReadUserData, WriteUserData, LocalServices and UserEnvironment. If your application requires one of the extended capabilities, for example SwEvent, you cannot sign it with self-signed certificate. In this case, apply for developer certificates from Symbian Signed.

Is Carbide.c++ needed?
If Qt Creator comes with the Nokia C/C++ compiler (WINSCW) then yes, you can ignore Carbide.c++ completely. Of if you don't plan to do any emulator builds ...

Compilation Error release-gcce
Doing make release-gcce on writemessage QtMobility example throws this error:

make -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\QtMobility\examples\writemessage\GCCE.make" FINAL CFG=UREL VERBOSE=-s

make[2]: *** No rule to make target `\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\ARMV5\LIB\QtMessaging_tp.dso', needed by `\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\GCCE\urel\writemessage.exe'. Stop.

make[1]: *** [TARGETWRITEMESSAGE_0XE6E34AD4] Error 2

make[1]: Entering directory `C:/QtMobility/examples/writemessage'

make -s -C \QtMobility\examples\writemessage -f "MAKEFILE_0XE6E34AD4.MK" TO_ROOT=..\..\.. EPOCBLD=..\..\..\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\QtMobility\examples\writemessage\MAKEFILE_0XE6E34AD4\GCCE TO_BLDINF=..\..\..\QtMobility\examples\writemessage PLATFORM=GCCE CFG=UREL FINAL

make[1]: Leaving directory `C:/QtMobility/examples/writemessage'

C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\tools\make.exe: Leaving directory `C:/QtMobility/examples/writemessage'

Exited with code 0.



Running "make sis" also errors, which means the above build was unsuccessful, even though "exit code 0" :

C:\QtMobility\examples\writemessage>make sis
make -s -f Makefile ok_sis
Processing writemessage_release-gcce.pkg...
 Error : Cannot find file : /S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/release/gcce/urel/writemessage.exe

writemessage_release-gcce.pkg(28) : error: file I/O fault.
file I/O fault, cannot open writemessage_release-gcce_unsigned.sis.

SIS creation failed!
Solution --> Unpack the QtMobility for Symbian SDK binaries.

WINSCW Debug, Build Success, Error during Run:
Starting C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe...
C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe exited with code -1073741819
Solution --> Close already running Emulator.

Qt Mobility Contacts when accessing a QContact object crashes on E71, but runs well on emulator
Seems like something to do with "weird" contacts. On my E71, the first two contacts (Groups) are just fine.
I think my Contact LocalId 1460 is somewhat corrupted or has data that Qt Mobility Contacts Symbian cannot cope with. :-(

WINSCW Debug, Build Success, Error During Run:
Starting C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe...
C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe exited with code 100
Solution --> Connect to a network, at least loopback. Or just try again.

How to know if WINSCW Debug Qt Mobility Contacts app is good:
Starting C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe...
Plugin paths: ("C:/Private/e6fe6e03", "C:/resource/qt/plugins", "C:/Private/e6fe6e03")
Looking for plugins in "C:/resource/qt/plugins/contacts" ("mobapicontactspluginsymbian.qtplugin")
Dynamic: found an engine plugin 0x3d9e3828 with name "symbian"
Found engines: ("symbian[]")
Found actions: ()
C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\winscw\udeb\contactsgo.exe exited with code 0

Qt Mobility Contact doesn't run at all on E71, but runs well on emulator
This runs:
    QList<QContactLocalId> contactIds = cm.contacts();
This doesn't:
    QContactFilter filter;
    QList<QContactLocalId> contactIds = cm.contacts(filter);

Can't build Qt Contacts app WINSCW Debug:
make[2]: *** No rule to make target `\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\WINSCW\udeb\QtContacts.lib', needed by `\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\WINSCW\udeb\messagemerge.exe'. Stop.
make[1]: *** [TARGETMESSAGE-MERGE_0XEA138C70] Error 2
But --> QtContacts_tp.lib exists !!!
Cause --> Mismatch between Qt Mobility binaries on S60 SDK and the Qt Mobility header files.
Solution -->  Make sure use the exact same Qt Mobility version installed in the S60 SDK and the header files used for development.

Sunday, January 24, 2010

Installing Qt 4.6.2 for Symbian SDK on Windows

In this blog post, I will show you how to setup the complete Qt for Symbian S60 development environment properly.

Symbian S60 Development Environment

First we need to setup a Symbian S60 Development Environment. No Qt-related stuff here yet.
  1. Install ActiveState Perl v5.6.1.638 (use ONLY version 5.6.1.638, other versions are not compatible).




    Windows Vista / Windows 7: make sure to run the installer as administrator.
    If not, ActiveState Perl Setup cannot modify the PATH. The workaround is to manually add C:\Perl\bin to the system environment variable PATH.

  2. Install Carbide.c++ IDE (at least version 2.3.0) or Symbian Application Developer Toolkit (ADT) (at least version 1.4, includes Carbide.c++ IDE 2.3.0.)
    I'm curious if Carbide.c++ is still needed when we use Qt Creator as the IDE.
  3. Click Start Menu -> Carbide.c++ -> Configure environment for WINSCW command line.


  4. Install Symbian S60 Platform SDK appropriate for your target device (includes GCCE compiler).
    Since we'll be using Qt for Symbian, it doesn't really matter which S60 Platform SDK you're using, any version above 3rd Edition FP1 (3.1) is good. 5th Edition seems to be a good choice though.




    When asked for Eclipse installation, just skip it.



    During install, if it complains about Java Runtime Environment, simply ignore if because you won't be using it anyway.
    When prompted for installation of CSL ARM Q1C Toolchain, click Yes to install.
For Windows Vista and Windows 7:
  • There are a few compatibility issues
  • You will be prompted by the SDK installer to apply the GCCE patch for MS Vista from <SDK>\plugins\vistapatch\ (<SDK> is C:\S60\devices\S60_5th_Edition_SDK_v1.0 by default). There are instructions in the help.txt file in that directory.
  • The SDK will normally register itself in the file: C:\Program Files\Common Files\Symbian\devices.xml, however on Vista it is forced to create the file in %USERPROFILE%\AppData\Local\VirtualStore\Program Files\Common Files\Symbian\devices.xml. Copy the file manually into the correct location.


  1. Install the Open C/C++ Plug-in for each Symbian Platform SDK you have (though with Qt for Symbian, you just need to have one Symbian SDK).
If you're working on a S60 3rd Edition, FP1 SDK (the earliest version on which Qt will run) you will also need to reinstall the RPipe library. This was installed by the OpenC plugin SDK to the S60_3rd_FP1_3 SDK root directory: \Symbian\9.2\S60_3rd_FP1_3\RPipe_3.1.zip:
  1. Uncompress RPipe_3.1.zip over the SDK root \Epoc32\ tree (e.g. \Symbian\9.2\S60_3rd_FP1_3\Epoc32\).
  2. Download and replace the file <SDK>\epoc32\tools\getexports.exe with getexports.exe
If you want to debug your app on your phone, download AppTRK for your phone and install it. e.g. for Nokia 5800 xpressMusic which runs Symbian S60 5th Edition, you download  s60_5_0_app_trk_3_1_2.sisx.

Qt for Symbian Development Environment

You can then setup Qt for Symbian development environment:
  1. Install Qt for Symbian SDK.
    Make sure to change the Qt folder to C:\Qt\4.6.2-symbian because C:\Qt\4.6.2 will be used for Qt for Windows. Each Qt SDK (e.g. for Windows and for Symbian) will have its own folder. Though you don't have to install Qt SDK for Windows if you only develop for Symbian, it doesn't hurt to name your Qt installation folder clearly.
Install Qt for Symbian on the phone / emulator:
  • Remove previous Qt versions from phone
  • Install either qt_installer.sis (Qt full package) or qtdemos.sis (Qt package + demos) to your phone or emulator.

Setup Qt Creator with Qt for Symbian

  1. Install Qt SDK
  2. Tools -> Options.
  3. Qt4 -> Qt Versions. S60's Qt must be detected from Qt for Symbian SDK.
  4. Qt4 -> S60 SDKs: ?
To get started with Qt Mobility, click here for Qt Mobility SDK Installation for Symbian on Windows tutorial.

For more information about Qt C++ development, check out C++ GUI Programming with Qt 4 (2nd Edition).

To learn Symbian C++ development, I recommend Porting to the Symbian Platform: Open Mobile Development in C/C++ (Symbian Press).

References:
Updates: Updated for Qt 4.6.2.