/**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:FDL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Free Documentation License ** Alternatively, this file may be used under the terms of the GNU Free ** Documentation License version 1.3 as published by the Free Software ** Foundation and appearing in the file included in the packaging of this ** file. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** $QT_END_LICENSE$ ** ****************************************************************************/ /*! \group platform-specific \title Platform-Specific Documentation \brief Documents describing platform-specific features of Qt. These documents describe platform-specific features provided by Qt, and discuss issues related to particular platforms and environments. \generatelist{related} */ /*! \page platform-notes.html \ingroup platform-specific \title Platform and Compiler Notes \brief Information about the platforms on which Qt can be used. This page contains information about the platforms Qt is currently known to run on, with links to platform-specific notes, including any known bugs or incompatibilities. Information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. \list \o \l{Platform and Compiler Notes - X11} \tableofcontents{1 Platform and Compiler Notes - X11} \o \l{Platform and Compiler Notes - Windows} \tableofcontents{1 Platform and Compiler Notes - Windows} \o \l{Platform and Compiler Notes - Mac OS X} \tableofcontents{1 Platform and Compiler Notes - Mac OS X} \o \l{Platform and Compiler Notes - Symbian} \tableofcontents{1 Platform and Compiler Notes - Symbian} \o \l{Platform and Compiler Notes - Embedded Linux} \tableofcontents{1 Platform and Compiler Notes - Embedded Linux} \o \l{Platform and Compiler Notes - Windows CE} \tableofcontents{1 Platform and Compiler Notes - Windows CE} \o \l{Platform and Compiler Notes - QNX} \tableofcontents{1 Platform and Compiler Notes - QNX} \o \l{Platform and Compiler Notes - VxWorks} \tableofcontents{1 Platform and Compiler Notes - VxWorks} \endlist \section1 General Compiler Notes \section2 Supported Features Not all compilers used to build Qt are able to compile all modules. The following table shows the compiler support for five modules that are not uniformly available for all platforms and compilers. \table \header \o Compiler \o{5,1} Features \header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X} \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X} \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X} \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X} \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X} \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \endtable * WebKit is only supported as a dynamically built library. Static linkage is not supported. \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64) This compiler is known to miscompile some parts of Qt when doing a release build. There are several workarounds: \list 1 \o Use a debug build instead. \o For each miscompilation encountered, recompile the file, removing the \c{-O2} option. \o Add \c{-fno-gcse} to the \l{qmake Variable Reference#QMAKE_CXXFLAGS_RELEASE}{QMAKE_CXXFLAGS_RELEASE} qmake variable. \endlist \section2 GCC 4.0.0 The released package of the compiler has some bugs that lead to miscompilations. We recommend using GCC 4.0.1 or later, or to use a recent CVS snapshot of the GCC 4.0 branch. The version of GCC 4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work with Qt for Mac OS X. \section2 Intel C++ Compiler Qt supports the Intel C++ compiler on both Windows and Linux. However, there are a few issues on Linux; see \l{Platform and Compiler Notes - X11#Intel C++ Compiler for Linux}{Intel C++ Compiler for Linux} for details. \section1 Feedback and Corrections If you have anything to add to this list or any of the platform or compiler-specific pages, please submit it via the \l{Bug Report Form} or through the \l{Public Qt Repository}. */ /*! \page platform-notes-x11.html \title Platform and Compiler Notes - X11 \contentspage Platform and Compiler Notes This page contains information about the X11 platforms Qt is currently known to run on, with links to platform-specific notes. More information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. \tableofcontents \target AIX \section1 AIX - 5.2 Qt has been tested on AIX 5.2, using the xlC compiler. \table \header \o Compiler \o Notes \row \o xlC \o If Qt is built correctly but all symbols are reported to be missing when you link an application, your makeC++SharedLib script might be out of date. Make sure you have the latest version from the \l{http://www-306.ibm.com/software/awdtools/vacpp/support/}{IBM website}. \row \o GCC \o We have tested earlier versions of Qt 4 successfully with GCC version 3.3 and above. Some versions of GCC may fail to link Qt with a "TOC overflow" message. Fix this by upgrading to the latest maintenance release of the dynamic linker. On AIX this is bos.rte.bind_cmds.4.1.5.3 or later. Some versions of GCC may fail to build Qt with STL and large-file support enabled, due to \l{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9551}{a bug in GCC}. Fix this by upgrading to the latest maintenance release of the compiler. It is also possible to work around this problem by running configure with either \c{-no-stl} or \c{-no-largefile}. \endtable \section2 IBM xlC The makeC++SharedLib utility must be in your PATH and be up to date to build shared libraries. From IBM's \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX} Redbook: \list \o "The second step is to use the makeC++SharedLib command to create the shared object. The command has many optional arguments, but in its simplest form, can be used as follows:" \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1 \o "The full path name to the command is not required; however, to avoid this, you will have to add the directory in which it is located to your PATH environment variable. The command is located in the /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX, Version 5 compiler." \endlist \section2 VisualAge C++ for AIX, Version 6.0 Make sure you have the \l{http://www-1.ibm.com/support/search.wss?rs=32&tc=SSEP5D&dc=D400}{latest upgrades} installed. \target FreeBSD \section1 FreeBSD - 6.0-RELEASE \note FreeBSD is a community supported platform. See the \l{Supported Platforms} page for more information. The system compiler on FreeBSD 4.x is GCC 2.95.4, which is not officially supported by Qt 4. We develop using and recommend ports/lang/gcc34. You will need to run configure with the \c{-platform freebsd-g++34} arguments. Optionally, you may use ports/lang/icc. The system compiler on FreeBSD 5.x and 6.x is GCC 3.4.4, which should be sufficient to build Qt. You do not need to add any special arguments when running configure. Optionally, you may use ports/lang/icc. Note that we do not actively test FreeBSD 4.x and 5.x. Our developers migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported. \section1 HP-UX Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures. \section2 PA-RISC - B.11.11 or later You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or hpux-acc-32), or GCC in 32 bit mode (hpux-g++). The default platform is hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC is A.03.57. The supported GCC compiler is GCC 3.4.3. \section2 Itanium - B.11.23 or later You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or hpuxi-acc-32). GCC is currently unsupported. The default platform is hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on Itanium is A.06.12. \section2 HP ANSI C++ (aCC) The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10. \section2 GCC The hpux-g++ platform is tested with GCC 3.4.4. \section2 OpenGL Support Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed. This is available for HP-UX 11i - see the \l{http://docs.hp.com/en/5992-2331/ch04s02.html}{Graphics and Technical Computing Software} section of the release notes for more information. \target IRIX \section1 IRIX - 6.5.x \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page and Qt's Software's online \l{Platform Support Policy} page for details.} Unpackaging and IRIX tar: Because of long filenames some files will be cut off incorrectly with IRIX tar. Please use GNU tar to unpack Qt packages. \section2 MIPSpro Qt 4.4.x requires MIPSpro version 7.4.2m. Note that MIPSpro version 7.4.4m is currently not supported, since it has introduced a number of problems that have not yet been resolved. We recommend using 7.4.2m for Qt development. However, please note the unsupported status of this platform. \section1 Linux There are no known problems with using Qt on production versions of Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)). For the GCC compiler, please also see the relevant \l{Platform and Compiler Notes#General Compiler Notes}{General Compiler Notes}. \section2 Installation problems See also the \l{Installation FAQ}. If you experience problems when installing new open source versions of Qt versions, try to use the open source Qt archives (e.g., RPM) provided by your Linux distribution. If you need to install the source (.tgz) archive, be aware that you will probably end up with two different versions of the Qt library installed on your system, which will probably lead to link errors, like this: \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 0 Fix this by removing the old version of the library. If you have problems installing open source versions of Qt provided by your Linux distribution (e.g., RPM), please consult the maintainers of the distribution, not us. Some RPM versions have problems installing some of the Qt RPM archives where installation stops with an error message warning about a "Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround this problem. \section2 Intel C++ Compiler for Linux Nokia currently tests the following compilers: \list \o Intel(R) C++ Compiler for applications running on IA-32, Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017 \o Intel(R) C++ Compiler for applications running on Intel(R) 64, Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017 \endlist We do not currently test the IA-64 (Itanium) compiler. \section2 Known Issues with Intel C++ Compiler for Linux \list \o Precompiled header support does not work in version 10.0.025 and older. For these compilers, you should configure Qt with -no-pch. Precompiled header support works properly in version 10.0.026 and later. \o Version 10.0.026 for Intel 64 is known to miscompile qmake when building in release mode. For now, configure Qt with -debug. Version 10.1.008 and later can compile qmake in release mode. \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are known crash with "(0): internal error: 0_47021" when compiling QtXmlPatterns, QtWebKit, and Designer in release mode. Version 10.1.017 compiles these modules correctly in release mode. \endlist \target Solaris \section1 Solaris - 9 or later \section2 Unpackaging and Solaris tar On some Solaris systems, both Solaris tar and GNU tar have been reported to truncate long filenames. We recommend using star instead (http://star.berlios.de). Please note that WebKit is not supported for Solaris, regardless of which compiler is used. \section2 CC See the notes for \l{Forte Developer / Sun Studio}. \section2 GCC Please use GCC 3.4.2 or later. Do not use GCC with Sun's assembler/linker, this will result in link-time errors in shared libraries. Use GNU binutils instead. GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will cause the resulting binaries to hang. \section2 Forte Developer / Sun Studio Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to \l{Sun Studio Patches} page on Sun's Web site to download the latest patches for your Sun compiler. Please note that Qt 4.6 is stricter in its STL requirements and that the default STL implementation used by Sun CC does not pass those requirements. This does not affect binary compatibility and you can continue to use STL in your own code, but Qt's STL-compatibility functions will be disabled. Sun CC ships with a secondary STL implementation (called stlport4) which is standards-compliant and can be used by Qt. You can enable it by passing the -library=stlport4 option to the compiler. Note that this does not affect Qt's binary compatibility, but it may affect that of other libraries and programs that use STL. \section2 Sun WorkShop 5.0 Sun WorkShop 5.0 is not supported with Qt 4. */ /*! \page platform-notes-windows.html \title Platform and Compiler Notes - Windows \contentspage Platform and Compiler Notes This page contains information about the Windows platforms Qt is currently known to run on, with links to platform-specific notes. More information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. \tableofcontents \section1 Windows Vista At the time Qt %VERSION% was released, there were no known Vista-specific issues. \target Windows NT \section1 Windows XP, Windows 2000 and Windows NT \section2 Installation location Installing Qt into a directory with spaces, e.g. C:\\Program Files, may cause linker errors like the following: \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 2 Install Qt into a subdirectory without spaces to avoid this problem. \section2 Possible GL conflict There is a known issue with running Microsoft NetMeeting, Lotus SameTime and other applications that require screen grabbing while direct rendering is enabled. Other GL-applications may not work as expected, unless direct rendering is disabled. \section2 GCC (MinGW) We have tested Qt with this compiler on Windows XP. The minimal version of MinGW supported is GCC 4.4. \note For users of the MinGW binary package: This package is now based on MinGW 4.4. The installer no longer offers to download MinGW for you, but rather offers to use a version of MinGW that you already have installed on your machine. You just tell the installer which directory MinGW is installed in. If you don't already have MinGW 4.4 installed, you can download a .zip archive from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip}{FTP site}. This archive provides fixes to MinGW and support for missing API, See the _patches directory in the archive for details. \note A MinGW installation is only needed to build against the binary package, not to run the pre-compiled binaries that are in the package. \section2 Intel C++ Compiler (Windows, Altix) Qt 4 has been tested successfully with: \list \o Windows - Intel(R) C++ Compiler for 32-bit applications, Version 9.1.040. \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030 \endlist We currently only test the Intel compiler on 32-bit Windows versions. \section2 Visual Studio (Windows) We do most of our Windows development on Windows XP, using Microsoft Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit versions). Qt works with the Standard Edition, the Professional Edition and Team System Edition of Visual Studio 2005. In order to use Qt with the Visual Studio 2005/2008 Express Edition you need to download and install the platform SDK. Due to limitations in the Express Edition it is not possible for us to install the Qt Visual Studio Integration. You will need to use our command line tools to build Qt applications with this edition. The Visual C++ Linker doesn't understand filenames with spaces (as in \c{C:\Program files\Qt\}) so you will have to move it to another place, or explicitly set the path yourself; for example: \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0 If you are experiencing strange problems with using special flags that modify the alignment of structure and union members (such as \c{/Zp2}) then you will need to recompile Qt with the flags set for the application as well. If you're using Visual Studio .NET (2002) Standard Edition, you should be using the Qt binary package provided, and not the source package. As the Standard Edition does not optimize compiled code, your compiled version of Qt would perform suboptimally with respect to speed. With Visual Studio 2005 Service Pack 1 a bug was introduced which causes Qt not to compile, this has been fixed with a hotfix available from Microsoft. See this \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry} for more information. There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit. Its optimizer causes trouble and generates code that crashes for the release builds. To avoid the crashes, You need to apply the hotfix in the following article http://support.microsoft.com/kb/2280741. */ /*! \page platform-notes-mac.html \title Platform and Compiler Notes - Mac OS X \contentspage Platform and Compiler Notes This page contains information about the Mac OS X versions Qt is currently known to run on, with links to platform-specific notes. More information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. \tableofcontents \section1 General Information Qt 4.6 applications can only be deployed on Mac OS X 10.4 (Tiger) and higher. Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up. Applications built against these version of Qt can be deployed on Mac OS X 10.3, but cannot be developed on that version of the operating system due to compiler issues. Qt 4.3 has been tested to run on Mac OS X 10.3.9 and up. See notes on the binary package for more information. Qt 4.1 has been tested to run on Mac OS X 10.2.8 and up. Qt 4.1.4 is the last release to work with Mac OS X 10.2. \section2 Required GCC version Apple's GCC 4 that is shipped with the Xcode Tools for both Mac OS X 10.4 and 10.5 will compile Qt. There is preliminary support for GCC 4.2 which is included with Xcode Tools 3.1+ (configurable with \c{-platform macx-g++42}). Please use the latest GCC 3.3 from Apple or a later version of GCC 3. The GCC 3.3 that is provided with Xcode 1.5 is known to generate bad code. Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}. \section2 Binary Package The binary package requires that you have your .qt-license file in your home directory. Installer.app cannot complete without a valid .qt-license file. Evaluation users of Qt will have information about how to create this file in the email they receive. The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1 (GCC 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (GCC 4.0.1) for Qt 4.1.1-4.1.4 and Xcode Tools 2.3 for 4.2.0. It will only link executables built against 10.4 (or a 10.4 SDK). You should be able to run applications linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+. If you require a different configuration, you will have to use the source package and build with GCC 3.3. \section2 Mac OS X on Intel hardware Qt 4 fully supports both the Intel and PowerPC architectures on the Mac. As of Qt 4.1 it is possible to support the Intel architecture by creating Universal Binaries with qmake. As of Qt 4.1 it is possible to build Qt as a set of universal binaries and frameworks from configure by adding these extra flags: \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 3 If you are building on Intel hardware you can omit the sdk parameter, but PowerPC hardware requires it. You can also generate universal binaries using qmake. Simply add these lines to your .pro file: \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 4 \section2 Build Issues If Qt does not build upon executing make, and fails with an error message such as \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 5 this could be an indication you have upgraded your version of Mac OS X (e.g. 10.3 to 10.4), without upgrading your Developer Tools (Xcode Tools). These must match in order to successfully compile files. Please be sure to upgrade both simultaneously. If problems still occur, contact support. \section2 Fink If you have installed the Qt for X11 package from \l{Fink}, it will set the QMAKESPEC environment variable to darwin-g++. This will cause problems when you build the Qt for Mac OS X package. To fix this, simply unset your QMAKESPEC or set it to macx-g++ before you run configure. You need to have a fresh Qt distribution (make confclean). \section2 MySQL and Mac OS X There seems to be a issue when both -prebind and -multi_module are defined when linking static C libraries into dynamic library. If you get the following error message when linking Qt: \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 6 re-link Qt using -single_module. This is only a problem when building the MySQL driver into Qt. It does not affect plugins or static builds. \section2 Qt and Precompiled Headers (PCH) Starting with Qt 3.3.0 it is possible to use precompiled headers. They are not enabled by default as it appears that some versions of Apple's GCC and make have problems with this feature. If you want to use precompiled headers when building the Qt source package, specify the -pch option to configure. If, while using precompiled headers, you encounter an internal compile error, try removing the -include header statement from the compile line and trying again. If this solves the problem, it probably is a good idea to turn off precompiled headers. Also, consider filing a bug report with Apple so that they can improve support for this feature. \section2 Attributes The following lists a set of useful attributes that can be used to tweak applications on Mac: Qt::AA_MacPluginApplication, Qt::AA_DontUseNativeMenuBar, Qt::AA_MacDontSwapCtrlAndMeta Qt::WA_MacNoClickThrough, Qt::WA_MacOpaqueSizeGrip, Qt::WA_MacShowFocusRect, Qt::WA_MacNormalSize, Qt::WA_MacSmallSize, Qt::WA_MacMiniSize, Qt::WA_MacVariableSize, Qt::WA_MacBrushedMetal, Qt::WA_MacAlwaysShowToolWindow, Qt::WA_MacFrameworkScaled, Qt::WA_MacNoShadow, Qt::Sheet, Qt::Drawer, Qt::MacWindowToolBarButtonHint, QMainWindow::unifiedTitleAndToolBarOnMac \section2 Mixing Qt with native code Two classes are awailable for either adding native Cocoa views/controls inside a Qt application, or the opposite, embedding Qt into a native Cocoa application: QMacCocoaViewContainer, QMacNativeWidget \section3 Using native Cocoa panels Launching native Cocoa panels from within a Qt application can sometimes be problematic. The reason is that Qt's event dispatcher is more flexible than what Cocoa offers, and lets the user spin the event dispatcher (and running QEventLoop::exec) without having to think about whether or not modal dialogs are showing on screen (which is a difference to Cocoa). Therefore we need to do special bookkeeping in Qt to handle this correctly, which unfortunately make mixing in native panels hard. The best way at the moment to do this, is to follow the pattern below, where we post the call to the function with native code rather than calling it directly. Then we now that Qt has cleanly updated any pending event loop recursions before the native panel is shown: \code #include class NativeProxyObject : public QObject { Q_OBJECT public slots: void execNativeDialogLater() { QMetaObject::invokeMethod(this, "execNativeDialogNow", Qt::QueuedConnection); } void execNativeDialogNow() { NSRunAlertPanel(@"A Native dialog", @"", @"OK", @"", @""); } }; #include "main.moc" int main(int argc, char **argv){ QApplication app(argc, argv); NativeProxyObject proxy; QPushButton button("Show native dialog"); QObject::connect(&button, SIGNAL(clicked()), &proxy, SLOT(execNativeDialogLater())); button.show(); return app.exec(); } \endcode */ /*! \page platform-notes-windows-ce.html \title Platform and Compiler Notes - Windows CE \contentspage Platform and Compiler Notes This page contains information about the Windows CE and Windows Mobile platforms Qt is currently known to run on, with links to platform-specific notes. More information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. */ /*! \page platform-notes-symbian.html \title Platform and Compiler Notes - Symbian \contentspage Platform and Compiler Notes \ingroup platform-specific \brief Information about the state of support for the Symbian platform. As with any port, the maturity for Qt for Symbian has not yet reached the same level as other established Qt ports. This page documents the current notes for the Symbian port. \section1 Source Compatibility Qt for Symbian provides the same level of source compatibility guarantee as given for other platforms. That is, a program which compiles against a given version of Qt for Symbian will also compile against all future versions of the same major release. \section1 Binary Compatibility As with every supported platform, we will strive to maintain application behavior and binary compatibility throughout the lifetime of the Qt 4.x series. However, due to the fact that Symbian support is newly added in 4.6.0, there is a slight possibility that minor corrections to the application binary interface (ABI) might be required in 4.6.1, in order to ensure compatibility going forward. Any such change will be clearly documented in the release notes for 4.6.1. \section1 Supported Devices Qt is designed to work on any device which runs one of the following versions of Symbian: \table \header \o Symbian Version \row \o S60 3.1 \row \o S60 3.2 \row \o S60 5.0 (Symbian ^1) \endtable Qt has received \l{Tier 1 Platforms}{Tier 1} testing on the following phone models: \table \header \o Phone \row \o Nokia 5800 \row \o Nokia E71 \row \o Nokia E72 \row \o Nokia N78 \row \o Nokia N95 \row \o Nokia N97 \row \o Samsung i8910 \endtable \section1 Supported Functionality The following technologies and classes are not currently supported: \table \header \o Technology \o Note \row \o QtConcurrent \o Planned for future release. \row \o QtDBus \o No current plans to support this feature. \row \o QtOpenGL ES \o Planned for future release. \row \o Printing support \o No current plans to support this feature. \row \o Qt3Support \o No current plans to support this feature. \endtable The following technologies have limited support: \table \header \o Technology \o Note \row \o QtSql \o The only driver supported is SQLite. \row \o QtMultimedia \o Although the module itself is supported, no backend for Symbian is currently available. However, there is a backend available for Phonon. \endtable \section1 Compiler Notes \section2 GCCE (Symbian) GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported when compiling Qt applications for the Symbian platform. \section1 Known Issues Known issues can be found by visiting the \l{http://qt.gitorious.org/qt/pages/QtKnownIssues}{wiki page} with an up-to-date list of known issues, and the list of bugs can be found by \l{http://bugreports.qt.nokia.com/browse/QTBUG/component/19171}{browsing} the S60 component in Qt's public task tracker, located at \l{http://bugreports.qt.nokia.com/}{http://bugreports.qt.nokia.com/}. For information about mixing exceptions with Symbian leaves, see \l{Exception Safety with Symbian}. \section1 Required Capabilities The Qt libraries are typically signed with \c{All -TCB} capabilites, but that does not mean your Qt application needs to be signed with the same capabilities to function properly. The capabilities your application needs to function properly depends on which parts of Qt you use, here is an overview: \table \header \o Module \o Required Symbian Capability \row \o QtCore \o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called. \row \o QtCore \o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.} \row \o QtDeclarative \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. \row \o QtNetwork \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. \row \o QtNetwork \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list (for example those added by the user or stored in the SIM card), without this capability only the CA certs built into the phone are used. \row \o QtMultiMedia \o \c UserEnvironment if QAudioInput is used. \row \o QtWebkit \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. \endtable \note Some modules rely on other modules. E.g. QtWebkit and QtDeclarative depend on QtNetwork and therefore any application that depends on these modules is also likely to need \c NetworkServices capability. For more information see the documentation of the individual Qt classes. If a class does not mention Symbian capabilities, it requires none. \section1 Multimedia and Phonon Support Qt provides a backend for Qt's Phonon module, which supports video and sound playback through Symbian's Multimedia Framework, MMF. In this release the support is experimental. Video playback may have flickering issues, and support for effects and playback queueing is incomplete. The audio and video formats that Phonon supports depends on what support the platform provides for MMF. The emulator is known to have limited codec support. In addition, there exists a backend for the Helix framework. However, due to it not shipping with Qt, its availability depends on the Symbian platform in use. If available, it is loaded in preference over the MMF plugin. If the Helix plugin fails to load, the MMF plugin, if present on the device, will be loaded instead. \section1 UI Performance in devices prior to Symbian^3 Qt uses the QPainter class to perform low-level painting on widgets and other paint devices. QPainter provides functions to draw complex shapes, aligned text and pixmaps. It can also do vector path clipping, coordinate transformations and Porter-Duff composition. If the underlying graphics architecture does not support all of these operations then Qt uses the raster graphics system for rendering. Most of the Symbian devices prior to Symbian^3 use a non-ScreenPlay graphics architecture which does not have native support for all functions provided by QPainter. In non-ScreenPlay devices Qt uses the raster graphics system by default which has a performance penalty when compared to native Symbian rendering. In order to be able to perform all functions provided by QPainter, the raster graphics system needs to have pixel level framebuffer access. To make this possible in non-ScreenPlay devices Qt has to create an additional offscreen buffer that is the target for all Qt rendering operations. Qt renders the widget tree to the offscreen buffer and the offscreen buffer is blitted to the framebuffer via Symbian Window Server. The following table shows the rendering stacks of native Symbian and Qt in non-ScreenPlay devices. \table \header \o Symbian \o Qt \row \o \image symbian-rendering-stack-non-screenplay.png \o \image symbian-qt-rendering-stack-non-screenplay.png \endtable The following diagrams show a simplified sequence of drawing a pixmap in a non-ScreenPlay device. \table \header \o Symbian \row \o \image symbian-draw-pixmap-sequence.png \endtable \table \header \o Qt \row \o \image symbian-qt-draw-pixmap-sequence.png \endtable When compared to a native Symbian application, Qt does an additional blit to the offscreen buffer before drawing to the framebuffer. That is the performance penalty which needs to be paid to get all functionality provided by QPainter in non-ScreenPlay architecture. */ /*! \page platform-notes-embedded-linux.html \title Platform and Compiler Notes - Embedded Linux \contentspage Platform and Compiler Notes This page contains information about the Embedded Linux platforms Qt is currently known to run on, with links to platform-specific notes. More information about the combinations of platforms and compilers supported by Qt can be found on the \l{Supported Platforms} page. */