Application Icon Example

The icon on a Nokia XPressMusic 5800

Creating an icon for Maemo

Maemo expects the icon of an application to be a 64x64 PNG image file. The file name of the icon should be the same as the executable with a .png extension. You also need a .desktop file that gives the window manager hints about the application, such as name, type and icon.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Application Icon
Exec=/opt/usr/bin/applicationicon
Icon=applicationicon
X-Window-Icon=
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable

The Icon field should also contain the name of the executable. On the device, application icons are stored in the /usr/share/icons/hicolor/64x64/apps directory and desktop files in the /usr/share/applications/hildon directory.

Creating an icon for Symbian

Symbian uses Scalable Vector Graphics (SVG Tiny 1.1+) to render application icons in the application menu. Therefore icons could be created manually with a text editor, since SVG files are plain text with XML syntax, but usually you would use a vector graphics program that is able to output SVG files. Popular graphics programs such as Adobe Illustrator or Inkscape are able to do so.

For best results, the icon should be created on a 44x44 pixel canvas. Otherwise the image might be scaled in unexpected ways.

Once you have created your icon, make sure that it is stored according to the SVG-Tiny 1.1+ standard. Inkscape, for instance, is not able to save images that way, but there are tools that can convert general SVG files into the Tiny format. For instance, the svg2svgt tool that is bundled with Symbian 3rd and 5th editon SDKs under the folder s60tools can do this conversion to some extent. Another tool to convert SVG to SVG Tiny is SVG Pony.

Adding the icons to the project

Edit the .pro file and specify the ICON variable for the symbian target. For Maemo, we need to add that the .desktop and icon file should be installed.

QT       += core gui

TARGET = applicationicon
TEMPLATE = app

SOURCES += main.cpp

OTHER_FILES += applicationicon.svg \
               applicationicon.png \
               applicationicon.desktop

symbian {
    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
    # override icon
    ICON = applicationicon.svg
    TARGET.UID3 = 0xe9f919ee
    TARGET.EPOCSTACKSIZE = 0x14000
    TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}

maemo5 {
    include($$QT_SOURCE_TREE/examples/maemo5pkgrules.pri)

    # override icon from maemo5pkgrules.pri
    icon.files = $${TARGET}.png
}
symbian: warning(This example might not fully work on Symbian platform)
maemo5: warning(This example might not fully work on Maemo platform)
simulator: warning(This example might not fully work on Simulator platform)

Currently, Qt Creator doesn't include the icon and desktop files in the application package for Maemo, merely the executable file is included. As a workaround for this, the files can be added manually in the Projects tab. In the "Create Package" build step for the Maemo target, the .desktop file and icon can be added to be a part of the package contents. Unfortunately, these additions are only stored as a part of the .pro.user file. This issue will be resolved in a future release of Qt Creator.

Manual addition of files to the "Create Package" build step

Files:

© 2016 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.