Nokia Qt Labs Releases Qt 5.0 Alpha
Nokia Qt Labs announced the alpha release of Qt 5 C++ application development framework, which focuses on the delivery of Qt Essential modules for Qt 5.
This new version of Qt goal is to bring the focus to a model, although native Qt using C++ would still be used to implement modular backend functionality for Qt Quick. The developers explains that this module is working nicely on Qt for embedded system where UIs are full screen, but more work is needed on the desktop, and it will only be fully implemented in Qt 5.1 or 5.2.
Qt developers make 4 big architectural changes to Qt internal architecture:
- Base all Qt ports on Qt Platform Abstraction layer (QPA) to make it easier to port Qt to other windowing systems and devices.
- Re-architect Qt graphics stack using a a Scenegraph on top of OpenGL to increase performance versus Qt 4, using Qt Quick and OpenGL (ES) 2.0
- Modular repository structure for increased flexibility and to meet the merge of desktop and mobile which allows to add /remove user specific modules as needed and a full integration of the Qt mobility APIs
- Separate all QWidget related functionality into its own library
Qt 5.0 alpha release also brings new functionalities in different part of Qt:
- Qt Core
- QStandardPaths class which provides the standard locations for things such as media and documents on your platform.
- JSON parser and speed optimized binary format for JSON.
- Mimetype recognition support, both on extension and file content.
- Compile time checked signal/slot connection syntax as well as a new Perl compatible regular expression engine.
- Many data structures have been rewritten and optimized for better performance.
- C++11 support, although Qt can still be compiled and work with a C++98 compliant compiler.
- Qt Gui
- QtWidgets library for all QWidget based classes.
- QtGui support for top level surfaces through the QWindow class
- Built-in OpenGL support.
- Qt Network
- DNS lookups support
- Removal of QHttp and QFtp classes (which are available standalone for those that need them).
- Many smaller improvements.
- Qt Widgets: Ported over to the new QPA architecture
- Qt Quick
- Qt Quick 1 module is available (same as the Qt Quick from Qt 4.x), but won’t be developed any further.
- Added new Qt Quick and Qt Qml modules.
- Separation of the graphical parts of Qt Quick from the QML and JS language into separate modules.
- Performance improvement to the QML engine
- The Qt Quick module contains the OpenGL based Scenegraph and all the basic items that are known from Qt Quick in Qt 4.x.
- Added support for GL based shader effects, particles and many other things.
- Qt 3D and Qt Location: Qt 3D (for 3d content), Qt Location (GPS access, maps, etc…) have been added to Qt Essentials.
- Qt WebKit
- WebKit C++ APIs remain unchanged since Qt 4.x
- Qt Webkit has been updated to a newer version from webkit.org providing many improvements and better HTML 5 compliance.
- Webkit won’t build on Windows for this alpha release, but will be enabled for the beta.
Full details on Qt 5 Features are available on Qt Project Wiki.
You can watch the short demo below using Qt5 with Qt Quick 2.0 and demonstrating distance field OpenGL shaders to render smoothly low-resolution pixmaps with excellent performance both in a computer and a mobile phone (Nokia N950).
If you already have written applications running on Qt 4.x, the new Qt 5 API may break your code and you should follow the porting instructions to make sure your code will build and run properly.
However, Qt developers insist that there is no rush to port apps to Qt 5 immediately, as Qt 4.8 is still there, although ultimately they believe that Qt 5 will offer enough benefits to consider moving.
Qt 5 alpha can be downloaded at http://qt-project.org/wiki/Qt-5-Alpha. Qt 5 Alpha is a source code release and no binaries are provided, so you’d have to to build it following the instructions found at http://qt-project.org/wiki/Qt-5-Alpha-building-instructions.
If you find any bugs you can report them to Qt Labs bug tracking system and you can provide your feedback on the qt development list (development at qt-project.org). Patches and bug fixes can be submitted to codereview.qt-project.org.