Qt 5 Beta

August 30th, 2012 – The Qt Project has released Qt 5.0 Beta and is calling platform developers, OS integrators and advanced Qt application developers to test and send us feedback. Qt 5 Beta is based upon the work from a core of approx. 250 developers.

Binaries are available for installation on the reference platforms: Linux (X11 and Wayland), MS Windows and Mac OS X. Unofficial Qt 5 packages are also available for other platforms like QNX, QtonPi and the main Linux distributions (Ubuntu, Debian, Fedora).

The goal is to have a final release before year end. Current focus areas include testing of the revamped Qt Quick and Qt WebKit, Qt Widget application API compatibility between Qt 4 and Qt 5, and the stability and good performance on MS Windows and Mac OS X.

Download [releases.qt-project.org]

The Aim

The Qt project aims to make developers’ life easier by enabling faster creation of great Qt apps and UIs on one or multiple targets. With Qt 5 we aim to make Qt better for addressing the latest UI paradigm shifts that i.e. touch screens and tablets require.

Amazing graphic capabilities and performance — Special focus on low cost hardware environments like mobile and embedded devices. Qt now requires OpenGL ES, offering impressive graphics features and performance for animated 2D and 3D objects and interfaces.

Developer productivity and flexibility — Make JavaScript and QML first class citizens with C++ and Qt Widget support remaining. New Qt JS backend powered by V8 and Qt WebKit 2 for HTML5 developers.

Cross-platform portability — Create new targets /OS development more easily due to the new Essentials and Add-ons module structure, plus consolidation of Qt Platform Abstraction (QPA).

Open development and open governance — Faster development and broader testing of Qt 5 is assured by the active participation of a growing community including developers from Nokia, the KDE project, Intel, KDAB, Digia and many more companies and individuals.

Keep as much compatibility with Qt 4 as possible — Porting from Qt 4 to Qt 5 is very easy. QWidget and related classes are fully supported for the desktop platforms.

What’s new

Since Qt 4 there have been numerous changes to Qt. Here’s a good overview of what’s new in Qt 5.

The full list of features can be found at Qt 5 Features [qt-project.org]. Deeper details are available in the change notes [qt.gitorious.org].

Qt Quick 2

  • Qt Quick is now an Essential module [qt-project.org] containing the OpenGL based Scenegraph and all the usual items
  • New support for OpenGL based shader effects and particles
  • QML and JavaScript support have moved to their own Essential module [qt-project.org]
  • Qt Quick as in Qt 4.x is available in a fully compatible Qt Quick 1 add-on module

Qt Qml

  • New module containing the QML engine and support for Javascript
  • Performance improvements and some enhancements to the language
  • Source compatible — note though that when writing QML items in C++ some changes are needed to adjust to the new scene graph
  • Uses the V8 JavaScript engine behind the scenes with improved performance
  • New classes QJSEngine and QJSValue

Qt WebKit

  • The WebKit module in the beta provides the same API as in Qt 4.x, but comes with performance improvements and new web-facing features
  • In the release following the beta we plan to rename the WebKit module into Qt WebKit Widgets, providing the same C++ API as in Qt 4
  • In addition we will introduce a new QML component that is based on the WebKit2 technology

Qt Core

  • QStandardPaths class giving standard locations for files
  • JSON parser and speed optimized binary format for JSON
  • MIME type recognition
  • New compile-time check of signal/slot connection syntax
  • New Perl-compatible regular expression engine
  • Many data structures have been rewritten and optimized for better performance
  • C+11 support where it makes sense (but Qt continues to compile and work with C+98 compilers)

Qt Gui

  • Support for top-level surfaces through the QWindow class
  • Built-in OpenGL support

Qt Network

  • Support for DNS lookups
  • QHttp and QFtp classes removed (they are available stand-alone)

Qt Widgets

  • All former QWidget based classes in Qt Gui have been separated out into the new Qt Widgets library
  • Ported over to the new Qt Platform Abstraction architecture
  • Works as in Qt 4.x

Qt 3D

  • This is now an add-on module to Qt 5

Qt Location

  • Maps and geolocation-related classes, formerly part of Qt Mobility, an add-on to Qt 5

Showcase


Livecoding video effects with Qt 5 [youtube.com]
Shows Big Buck Bunny as you never saw it before. Qt effects created with QML.


Pimp my video: shader effects and multimedia [labs.qt.nokia.com] / Video [youtube.com]
See the potential of Qt 5 video effects in interesting blog post with impressive video.


Qt MediaHub [qt-project.org] / Video [youtube.com]
A showcase of the power and convenience of Qt Quick. Functional and open source demo for you to learn best practices when using Qt / QML.


QtonPi [qt-project.org] / Video [youtube.com]
Qt 5 on the Raspberry Pi board. Cutting edge project building a minimal OS and an App SDK.

Known issues

See the Known Issues page [qt-project.org]

The Qt 5 Beta release includes the following modules:

  • Essentials [qt-project.org] : Qt Core, Qt GUI, Qt Multimedia, Qt Network, Qt Qml, Qt Quick, Qt SQL, Qt Test and Qt WebKit.
  • Add-ons [qt-project.org] : Qt 3D, Qt D-Bus, Qt JS Backend, Qt Graphical Effects, Qt Image Formats, Qt Location, Qt OpenGL, Qt Print Support, Qt Publish and Subscribe, Qt Quick 1, Qt Script, Qt Script Tools, Qt Service Framework, Qt SVG, Qt System Info, Qt Tools, Qt Wayland, Qt WebKit Widgets, Qt Widgets, Qt XML and Qt XML Patterns.

Future releases might include more modules. See the full lists of modules available at Qt Essentials Modules [qt-project.org] and Qt Add-ons Modules [qt-project.org] .

New since Qt 5 alpha

Since Alpha the focus has been bug fixing and stabilization:

  • Continued work on reference platform stability. Qt Creator compiles and runs well on Qt 5
  • Qt WebKit is now available on MS Windows
  • Cleanups of a few new APIs
  • Qt now expects source code to be encoded in UTF-8
  • New QUrl implementation merged
  • Unified data structure behind QVector, QString and QByteArray
  • New metaobject revision, better API for QmetaObject with access to QObject’s meta data
  • Upgrade to Unicode 6.1
  • New plugin system for Qt 5 apps.
  • Qt Print Support module refactoring and cleanups
  • C++11 support enabled by default on compilers supporting it
  • Exceptions disabled on Qt modules that don’t require them for space/size savings
  • QHash hash key randomization for security
  • QIcon moved back to QtGui
  • Modularizing of documentation started
  • QNX support improvements
  • Preliminary ANGLE support on MS Windows offering better OpenGL support
  • Qt Qml and Qt Quick have seen a huge amount of bug fixes, memory usage improvements and optimizations.

Most other modules got minor improvements and bug fixes.

Note: Qt Base is the only module that has accepted significant changes that didn’t make it to the Alpha release

Installation

This release includes both source packages and binaries for Mac OS X, Windows and Ubuntu Linux. Developers who want to build their own binaries – see the README in the source package.

You might find it useful to check unofficial binaries [qt-project.org] published by the community.

See also Building Qt 5 from Git [qt-project.org] .

Feedback

The Qt project bug tracker [bugreports.qt-project.org] is the preferred channel for reporting issues.

Check also the Qt 5 Beta announcement blog post [labs.qt.nokia.com] at Qt Labs

Developers using Qt are encouraged to join the Interest [lists.qt-project.org] mailing list to share impressions and seek community help.

Documentation & Guides

Documentation

Developer Guides & Tutorials

Introduction to Application Development with Qt Quick

Porting existing code

Categories: