What's New in Qt 5.0 | Qt 5.13

Qt 5.13 | What's New in Qt 5.0

Qt 5.13.1 Reference Documentation

# What's New in Qt 5.0

## Qt Core Changes

### QStandardPaths

QStandardPaths is a more powerful version of QDesktopServices that was present in Qt 4. Modeled after KStandardDirs from KDE 4, it contains additional features such as searching for all occurrences of a given file in the storage locations.

### Compile-time Checks for Signal-slot Connections

QObject now supports an additional syntax for connecting signals to slots, which forces the compiler to check whether the signal and the receiver exist and their arguments are compatible.

This syntax allows connecting a signal to any kind of C++ receiver, including C++11 lambdas, member functions, or static functions. The receivers no longer need to be declared as slots, but such declarations are still recommended for readability.

See Differences between String-Based and Functor-Based Connections for more details.

### Perl-Compatible Regular Expressions

QRegularExpression is introduced to provide better support for regular expressions compatible with Perl. This class is more powerful and faster than QRegExp, and supports more features such as lazy and possessive quantifiers, lookbehinds, named capturing groups, and iteration of matches.

## Qt GUI Changes

### New Classes for Windowing and Rendering

A new set of enabler classes have been added, most importantly QWindow, QScreen, QSurfaceFormat, and QOpenGLContext. These are now used as backends for the Qt Widgets module and by Qt Quick 2.

### OpenGL Classes

Most of the useful Qt OpenGL classes have been polished and moved into Qt GUI. A few important ones are, QOpenGLFramebufferObject, QOpenGLShaderProgram, QOpenGLFunctions, and so on. For the complete list, refer to Qt GUI C++ Classes.

This change introduces QOpenGLContext as a replacement for QGLContext. This replacement class is more generic and decoupled from QWindow, making it to support more use cases such as using the same context for multiple surfaces.

### QOpenGLPaintDevice

Instead of having QWindow and QOpenGLFramebufferObject be subclasses of QPaintDevice, you can now use QOpenGLPaintDevice. This new alternative can be created on the stack, makes it easier and flexible to render into the currently bound context using QPainter.

## Qt Network Changes

### QDnsLookup

It is now possible to lookup DNS records using the new QDnsLookup API. This does not replace QHostInfo, which is still the API to be used for resolving a host name to an IP address. QDnsLookup is mainly used for other types of DNS record, such as SRV, TXT and MX.

Note: This new class replaces the Q3Dns API, which is removed in Qt 5.

### Better Support for IPv6 and Dual-mode Networks

Most applications using host names and network layer transparent protocols, will now gain IPv6 support transparently. This means, QTcpServer and QUdpSocket bound to QHostAddress::Any can now receive both IPv4 and IPv6 connections, although, QHostAddress::AnyIPv4 and QHostAddress::AnyIPv6 can be used to bind to only one protocol.

Outgoing http connections using QNetworkAccessManager will now attempt both IPv4 and IPv6 connections in parallel, and use the one that succeeds first.

### Binding TCP Sockets

QTcpSocket can be bound to an IP address before connecting, which is useful for limiting connection to a specific interface in a multi-homed environment.

### SSL Certificates

SSL certificate extensions can now be accessed to enable further development of SSL support in Qt.

Developers can also verify an SSL certificate chain programatically now.

### Workarounds for Buggy SSL Servers

The QSsl::SslOption enum now allows a QSslSocket-based code to access legacy systems by enabling bug workarounds.

Note: This change is also back-ported to Qt 4.8.

### Support for Opaque Private Keys

This allows applications to read private keys from devices such as PKCS#11 dongles, as illustrated by the qsslkey example

## Qt QML Changes

This is a new module in Qt 5 that provides the QML engine and the backend infrastructure.

### QML Engine

- V8 JavaScript engine
- Various parser and compiler optimizations have been implemented along with the new bindings optimizer.
- Loading/compilation can now be performed in a separate thread. This can be enabled by loading a loader object asynchronously through its source property, or by passing the Component.Asynchronous parameter to Qt.createComponent().
- New QQmlEngine::trimComponentCache() function safely discards unused data in the engine’s component cache to free memory.

### Type System

- New var property type can hold JavaScript references.
- QML properties of type var and variant can now hold pixmaps.
- Value type improvements:
  - QColor is now a value type. The red, green, blue and alpha channels of a “color” property can now be accessed using “r”, “g”, “b” and “a” properties.
  - Improved support for QVector4D, now constructible in QML using Qt.vector4d().
- Support for certain sequence types (QList<int>, QList<qreal>, QList<bool>, QList<QUrl>, QList<QString> and QStringList) has been improved. QObjects can define Q_PROPERTYs of these types which can be accessed from JavaScript.

### Other

- JavaScript (.js) files can now import QML modules and other JavaScript files using the “import” statement.
- QQmlExpression can now be constructed directly (and more efficiently) from a QQmlScriptString.
- The component returned by Qt.createComponent() is no longer the owned by the engine. Be sure to hold a reference,or provide a parent.

## Qt Quick Changes

This is a new module in Qt 5 which provides the visual canvas and scenegraph backend as well as the `QtQuick` QML module for QML-based application development.

The module replaces the QDeclarative* equivalents in QtQuick 1 with the following:

- QQuickView
- QQuickWindow
- QQuickItem
- QQuickPaintedItem

See Qt Quick C++ Classes for the complete list.

The QtQuick 2.0 QML module is a major update, and the following sections outline the features that come with it:

### New Graphics Architecture

- Qt Quick 2.0 uses a dedicated OpenGL (ES) 2.0 based Qt Quick Scene Graph scene graph for all its rendering.

### Visual and Graphic Types

- New Canvas type for drawing, provides a HTML5 canvas-like API along with the following additional features:
  - Two render targets: Canvas.Image and Canvas.FramebufferObject.
  - Background thread rendering.
  - Tiled canvas rendering.
  - Support for most of the HTML5 context2d APIs.
- Image type now has:
  - New horizontal and vertical alignment properties, horizontalAlignment and verticalAlignment.
  - Image.Pad enum value for `fillMode` property does not transform the image unlike the other `fillMode` enum values.
  - sourceSize.width and sourceSize.height now fits the image to size maintaining the aspect ratio.

### Animations

- New SpriteSequence type renders animated sprites and can transition between animations.
- New Sprite type that represents each animation in a SpriteSequence.
- New AnimatedSprite type for drawing single sprite animations.

### Changes to the Text types

- Text:
  - AutoText format now switches to `StyledText` instead of `RichText`.
  - lineLaidOut signal is emitted for every line during the layout process to give the option of positioning and/or resizing text as they are laid out.
  - doLayout() method can now trigger the text layout from JavaScript.
  - ElideRight to support text that spans multiple lines.
  - fontSizeMode property now supports wrapping the text to the item size.
  - minimumPixelSize and minimumPointSize properties can be used to specify a lower bound when auto-fitting.
- TextEdit.textFormat property now defaults to `PlainText` instead of `AutoText`.
- TextInput now has `wrapMode` and verticalAlignment properties.
- `TextInput.positionAt()` now takes `y` value.

### User Input

- New MultiPointTouchArea type can process multi-point touches and provide information about the touch points including position, pressure and velocity.
- MouseArea type now:
  - Propagates wheel events.
  - Propagates `clicked`, `doubleClicked` and `pressAndHold` events differently to `pressed`. These events are propagated to the handler of the topmost MouseArea in the stack-order.
  - Can ignore the propagated events using the `propagateComposedEvents`. Such ignored events are propagated to the next MouseArea handler in the stack-order.

### Specialized Containers

- Flickable type now has:
  - a new `rebound` property that enables you to specify the transition type for the bounce back animation.
  - New `topMargin`, `bottomMargin`, `leftMargin`, and `rightMargin` properties allow extra margin space to be specified. This is useful to implement the pull-to-refresh functionality for a list.
  - New `xOrigin` and `yOrigin` properties provide the top left position of the content item.
  - New `dragging`, `draggingHorizontally`, and `draggingVertically` properties that provide information when the flickable area is dragged.

### Positioners

The following features are related to Row, Column, Grid, and Flow types:

- The “add” and “move” transitions can now access the ViewTransition attached property, and also animate arbitrary item properties (instead of being restricted to animating an item’s position).
- New `Positioner.index`, `Positioner.isFirstItem` and `Positioner.isLastItem` attached properties for items within a positioner.
- The Grid type has new `rowSpacing` and `columnSpacing` properties.
- All spacing properties on positioners now use real numbers instead of integers.

### Models and Views

- ListView and GridView:
  - Transitions can be specified to animate the adding, removing and moving of items in a view. For details, see ViewTransition, ListView.add, ListView.addDisplaced, GridView.add, and GridView.addDisplaced.
  - New `verticalLayoutDirection` property enables items to be laid out from bottom-to-top using the `BottomToTop` enum value.
  - The `cacheBuffer` property now has a non-zero default and delegates in the `cacheBuffer` are created asynchronously.
  - New `headerItem` and `footerItem` properties provide access to the instantiated header and footer items.
  - `RightToLeft` layout now also reverses the `preferredHighlightBegin` and `preferredHighlightEnd`.
- ListView's new `section.labelPositioning` property can fix the current section label to the start of the view, and the next section label to the end of the view, so that labels do not scroll while section items are still in view.
- PathView has two new properties, `curretnItem` and `maximumFlickVelocity`.

### Particles System Support

The new QtQuick.Particles 2.0 module provides support for the composition of a variety of 2D particle systems. See `Using the Qt Quick Particle System` for more details.

### Utility Types

- New PathArc, PathCurve and PathSvg types:
  - `PathArc` and `PathCurve` support the construction of arcs and catmull-rom curves, respectively. PathSvg supports the construction of a path from an SVG string.
- Loader:
  - New `asynchronous` property allows components to be instantiated with a lower chance of blocking. With the `asynchronous` property set to `true`, the component is compiled in a background thread.
  - New `active` property delays instantiation of a Loader object’s item.
  - New `setSource(JSObject)` method to specify initial property values for the loaded item, similar to Component.createObject().
  - `sourceChanged` signal is now only emitted when the source changes and the `sourceComponentChanged` signal is now emitted when the `sourceComponent` is changed. Ealier, these signals were emitted by the Loader only when one of the two properties had changed.
  - Loader type can now be used as a value source, and it can restore any previously set binding if its "when" clause becomes `false`.

## Qt Multimedia Changes

Qt Multimedia is an essential module replacing the QtMultimedia library and Qt MultimediaKit mobility API in Qt 4.8. It features full support for Audio and Video playback, and recording. Support for web cameras is integrated.

Qt Multimedia uses the system’s native multimedia engine as a backend, and does not come with its own audio or video codecs. Thus the supported list of codecs is equivalent to the ones supported by the underlying OS.

It uses DirectShow and WMF on Windows, AVFoundation on Mac and gstreamer on Linux.

## New Classes and Functions

The section provides a comprehensive list of all new classes and functions introduced in Qt 5.

- New Classes
- New Member Functions
- New Functions in Namespaces
- New Global Functions
- New Macros
- New Enum Types
- New Typedefs
- New Properties
- New QML Types
- New QML Properties
- New QML Methods

### New Classes

A
  QAbstractNativeEventFilter

B
  QBackingStore

C
  const_iterator (QJsonObject)
  QCameraFeedbackControl

D
  QDnsLookup

E
  QEnterEvent
  QEventLoopLocker
  QException
  QExposeEvent

F
  QFileDevice

G
  QGuiApplication

I
  iterator (QJsonObject)
  QInputMethodQueryEvent

J
  QJSEngine
  QJsonArray
  QJsonDocument
  QJsonObject
  QJsonParseError
  QJsonValue
  QJSValue

M
  QMessageLogContext
  QMessageLogger
  QMimeDatabase
  QMimeType

O
  QOpenGLBuffer
  QOpenGLContext
  QOpenGLContextGroup
  QOpenGLFramebufferObject
  QOpenGLFramebufferObjectFormat
  QOpenGLFunctions
  QOpenGLPaintDevice
  QOpenGLShader
  QOpenGLShaderProgram

Q
  QQmlComponent
  QQmlEngine
  QQmlError
  QQmlExpression
  QQmlExtensionPlugin
  QQmlListProperty
  QQmlListReference
  QQmlNetworkAccessManagerFactory
  QQmlParserStatus
  QQmlProperty
  QQuickImageProvider
  QQuickTextureFactory
  QQuickView
  QQuickWindow

R
  QRegularExpression
  QRegularExpressionMatch
  QRegularExpressionMatchIterator

S
  QScreen
  QScroller
  QSslCertificateExtension
  QStandardPaths
  QStyleHints
  QSurface
  QSurfaceFormat

T
  QTouchDevice

U
  QUnhandledException
  QUrlQuery

W
  QWindow
  QWinEventNotifier

### New Member Functions

Class QChar:

bool | hasMirrored(uint ucs4)
bool | isDigit(uint ucs4)
bool | isLetter(uint ucs4)
bool | isLetterOrNumber(uint ucs4)
bool | isLower(uint ucs4)
bool | isMark(uint ucs4)
bool | isNonCharacter() const
bool | isNonCharacter(uint ucs4)
bool | isNumber(uint ucs4)
bool | isPrint(uint ucs4)
bool | isPunct(uint ucs4)
bool | isSpace(uint ucs4)
bool | isSurrogate() const
bool | isSurrogate(uint ucs4)
bool | isSymbol(uint ucs4)
bool | isTitleCase(uint ucs4)
bool | isUpper(uint ucs4)
bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QStringView:

uint | qHash(const QBitArray &key, uint seed)
uint | qHash(QLatin1String key, uint seed)
uint | qHash(const T *key, uint seed)
uint | qHash(const QPair<T1, T2> &key, uint seed)
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QLatin1String:

bool | operator!=(const QByteArray &other) const
bool | operator<(const QByteArray &other) const
bool | operator<=(const QByteArray &other) const
bool | operator==(const QByteArray &other) const
bool | operator>(const QByteArray &other) const
bool | operator>=(const QByteArray &other) const

Class QMetaObject:

bool | checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method)

Class QByteArray:

QByteArray::const_iterator | cbegin() const
QByteArray::const_iterator | cend() const
const QPoint | operator+(const QPoint &point)
const QPointF | operator+(const QPointF &point)

Class QString:

QString & | append(const QChar *str, int len)
QString::const_iterator | cbegin() const
QString::const_iterator | cend() const
bool | contains(const QRegularExpression &re) const
int | count(const QRegularExpression &re) const
QString | fromLatin1(const QByteArray &str)
QString | fromLocal8Bit(const QByteArray &str)
QString | fromUtf8(const QByteArray &str)
int | indexOf(const QRegularExpression &re, int from) const
int | lastIndexOf(const QRegularExpression &re, int from) const
const QPoint | operator+(const QPoint &point)
const QPointF | operator+(const QPointF &point)
QString & | remove(const QRegularExpression &re)
QString & | replace(const QRegularExpression &re, const QString &after)
QString | section(const QRegularExpression &re, int start, int end, QString::SectionFlags flags) const
QStringList | split(const QRegularExpression &re, QString::SplitBehavior behavior) const
QString | toHtmlEscaped() const

Class QObject:

virtual void | connectNotify(const QMetaMethod &signal)
virtual void | disconnectNotify(const QMetaMethod &signal)
QList<T> | findChildren(const QRegularExpression &re, Qt::FindChildOptions options) const
bool | isSignalConnected(const QMetaMethod &signal) const

Class QKeyValueIterator:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QPair:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QVector:

QVector::const_iterator | cbegin() const
QVector::const_iterator | cend() const
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QList:

QList::const_iterator | cbegin() const
QList::const_iterator | cend() const
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QRegExp:

uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QStringList:

QStringList | filter(const QRegularExpression &re) const
int | indexOf(const QRegularExpression &re, int from) const
QString | join(QChar separator) const
int | lastIndexOf(const QRegularExpression &re, int from) const
QStringList & | replaceInStrings(const QRegularExpression &re, const QString &after)

Class QScopedPointer:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QVarLengthArray:

T & | back()
const T & | back() const
QVarLengthArray::const_iterator | cbegin() const
QVarLengthArray::const_iterator | cend() const
bool | empty() const
T & | front()
const T & | front() const
int | length() const
bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)
void | pop_back()
void | push_back(const T &t)

Class QMetaType:

void * | construct(int type, void *where, const void *copy)
void * | construct(void *where, const void *copy) const
void * | create(const void *copy) const
void | destroy(void *data) const
void | destruct(int type, void *where)
void | destruct(void *data) const
QMetaType::TypeFlags | flags() const
bool | isRegistered() const
bool | isValid() const
const QMetaObject * | metaObjectForType(int type)
int | sizeOf(int type)
int | sizeOf() const
QMetaType::TypeFlags | typeFlags(int type)

Class QAbstractEventDispatcher:

bool | filterNativeEvent(const QByteArray &eventType, void *message, long *result)
void | installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
void | removeNativeEventFilter(QAbstractNativeEventFilter *filter)

Class QMap:

QMap::const_iterator | cbegin() const
QMap::const_iterator | cend() const

Class QHash:

QHash::const_iterator | cbegin() const
QHash::const_iterator | cend() const
uint | qHash(const QUrl &url, uint seed)
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QMultiHash:

uint | qHash(const QUrl &url, uint seed)
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)

Class QVariant:

QJsonArray | toJsonArray() const
QJsonDocument | toJsonDocument() const
QJsonObject | toJsonObject() const
QJsonValue | toJsonValue() const
QModelIndex | toModelIndex() const
QRegularExpression | toRegularExpression() const
QUuid | toUuid() const

Class QPersistentModelIndex:

uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)
void | swap(QPersistentModelIndex &other)

Class QAbstractItemModel:

void | layoutAboutToBeChanged(const QList<QPersistentModelIndex> &parents, QAbstractItemModel::LayoutChangeHint hint)
void | layoutChanged(const QList<QPersistentModelIndex> &parents, QAbstractItemModel::LayoutChangeHint hint)

Class QDateTime:

void | swap(QDateTime &other)

Class QLocale:

uint | qHash(const QUuid &uuid, uint seed)

Class QSet:

QSet::const_iterator | cbegin() const
QSet::const_iterator | cend() const

Class QSharedPointer:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)
void | reset()
void | reset(T *t)
void | reset(T *t, Deleter deleter)

Class QWeakPointer:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QDebug:

bool | autoInsertSpaces() const
void | setAutoInsertSpaces(bool b)
void | swap(QDebug &other)

Class QRegularExpression:

uint | qHash(const QUuid &uuid, uint seed)

Class QUrlQuery:

uint | qHash(const QUuid &uuid, uint seed)

Class QUrl:

void | setQuery(const QUrlQuery &query)
QString | toDisplayString(QUrl::FormattingOptions options) const

Class QUuid:

QUuid | createUuidV3(const QUuid &ns, const QByteArray &baseData)
QUuid | createUuidV3(const QUuid &ns, const QString &baseData)
QUuid | createUuidV5(const QUuid &ns, const QByteArray &baseData)
QUuid | createUuidV5(const QUuid &ns, const QString &baseData)
uint | qHash(const QUuid &uuid, uint seed)

Class QCoreApplication:

void | installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
void | removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)

Class QCryptographicHash:

bool | addData(QIODevice *device)

Class QDeadlineTimer:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
const QPoint | operator+(const QPoint &point)
const QPointF | operator+(const QPointF &point)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QFileInfo:

bool | isNativePath() const
void | swap(QFileInfo &other)

Class QDir:

bool | removeRecursively()
void | swap(QDir &other)

Class QPointF:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
const QPointF | operator+(const QPointF &point)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QPoint:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
const QPoint | operator+(const QPoint &point)
const QPointF | operator+(const QPointF &point)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QEasingCurve:

void | swap(QEasingCurve &other)
QVector<QPointF> | toCubicSpline() const

Class QVersionNumber:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QLibraryInfo:

bool | isDebugBuild()

Class QLinkedList:

QLinkedList::const_iterator | cbegin() const
QLinkedList::const_iterator | cend() const

Class QMargins:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QMarginsF:

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)

Class QMetaMethod:

QMetaMethod | fromSignal(PointerToMemberFunction signal)
bool | isValid() const
QByteArray | methodSignature() const
QByteArray | name() const
bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)
int | parameterCount() const
int | parameterType(int index) const
int | returnType() const

Class QPointer:

void | clear()

Class QPluginLoader:

void | qRegisterStaticPluginFunction(QStaticPlugin plugin)

Class QProcess:

QStringList | arguments() const
QString | program() const

Class QProcessEnvironment:

void | swap(QProcessEnvironment &other)

Class QSize:

QSize | scaled(int width, int height, Qt::AspectRatioMode mode) const
QSize | scaled(const QSize &s, Qt::AspectRatioMode mode) const
QSize | transposed() const

Class QSizeF:

QSizeF | scaled(qreal width, qreal height, Qt::AspectRatioMode mode) const
QSizeF | scaled(const QSizeF &s, Qt::AspectRatioMode mode) const
QSizeF | transposed() const

Class QThread:

QAbstractEventDispatcher * | eventDispatcher() const
void | setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)

Class QDBusPendingCall:

void | swap(QDBusPendingCall &other)

Class QDBusUnixFileDescriptor:

void | swap(QDBusUnixFileDescriptor &other)

Class QAbstractFormBuilder:

QString | errorString() const

Class QDesignerFormWindowInterface:

void | activateResourceFilePaths(const QStringList &paths, int *errorCount, QString *errorMessages)
QStringList | activeResourceFilePaths() const
virtual QStringList | checkContents() const = 0
virtual QWidget * | formContainer() const = 0

Class QDesignerPropertySheetExtension:

virtual bool | isEnabled(int index) const

Class QDesignerFormWindowManagerInterface:

virtual QAction * | action(QDesignerFormWindowManagerInterface::Action action) const = 0
virtual QActionGroup * | actionGroup(QDesignerFormWindowManagerInterface::ActionGroup actionGroup) const = 0
virtual void | closeAllPreviews() = 0
virtual void | showPluginDialog() = 0
virtual void | showPreview() = 0

Class QDesignerContainerExtension:

virtual bool | canAddWidget() const
virtual bool | canRemove(int index) const

Class QTextFormat:

void | swap(QTextFormat &other)

Class QMouseEvent:

const QPointF & | localPos() const
const QPointF & | screenPos() const
const QPointF & | windowPos() const

Class QRegion:

bool | isNull() const

Class QFont:

void | removeSubstitutions(const QString &familyName)
void | swap(QFont &other)

Class QRawFont:

QRectF | boundingRect(quint32 glyphIndex) const
void | swap(QRawFont &other)

Class QGlyphRun:

QRectF | boundingRect() const
QGlyphRun::GlyphRunFlags | flags() const
bool | isEmpty() const
bool | isRightToLeft() const
void | setBoundingRect(const QRectF &boundingRect)
void | setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled)
void | setFlags(QGlyphRun::GlyphRunFlags flags)
void | setRightToLeft(bool rightToLeft)
void | swap(QGlyphRun &other)

Class QTextCharFormat:

QFont::SpacingType | fontLetterSpacingType() const
int | fontStretch() const
void | setFontLetterSpacingType(QFont::SpacingType letterSpacingType)
void | setFontStretch(int factor)

Class TouchPoint:

QVector<QPointF> | rawScreenPositions() const

Class QDrag:

QPixmap | dragCursor(Qt::DropAction action) const

Class QFontInfo:

void | swap(QFontInfo &other)

Class QFontMetrics:

void | swap(QFontMetrics &other)

Class QFontMetricsF:

void | swap(QFontMetricsF &other)

Class QTextCursor:

void | swap(QTextCursor &other)

Class QTextLine:

QList<QGlyphRun> | glyphRuns(int from, int length) const

Class QPalette:

void | swap(QPalette &other)

Class QGuiApplication:

bool | isSavingSession() const

Class QStaticText:

void | swap(QStaticText &other)

Class QPlatformFontDatabase:

virtual QFont | defaultFont() const
virtual bool | fontsAlwaysScalable() const
virtual QString | resolveFontFamilyAlias(const QString &family) const
virtual QList<int> | standardSizes() const

Class QCameraFeedbackControl:

virtual bool | isEventFeedbackEnabled(QCameraFeedbackControl::EventType event) const = 0
virtual bool | isEventFeedbackLocked(QCameraFeedbackControl::EventType event) const = 0
virtual void | resetEventFeedback(QCameraFeedbackControl::EventType event) = 0
virtual bool | setEventFeedbackEnabled(QCameraFeedbackControl::EventType event, bool enabled) = 0
virtual bool | setEventFeedbackSound(QCameraFeedbackControl::EventType event, const QString &filePath) = 0

Class QCameraExposureControl:

virtual QVariant | actualValue(QCameraExposureControl::ExposureParameter parameter) const = 0
void | actualValueChanged(int parameter)
virtual bool | isParameterSupported(QCameraExposureControl::ExposureParameter parameter) const = 0
void | parameterRangeChanged(int parameter)
virtual QVariant | requestedValue(QCameraExposureControl::ExposureParameter parameter) const = 0
void | requestedValueChanged(int parameter)
virtual bool | setValue(QCameraExposureControl::ExposureParameter parameter, const QVariant &value) = 0
virtual QVariantList | supportedParameterRange(QCameraExposureControl::ExposureParameter parameter, bool *continuous) const = 0

Class QNetworkProxyQuery:

void | swap(QNetworkProxyQuery &other)

Class QLocalServer:

bool | listen(qintptr socketDescriptor)
QLocalServer::SocketOptions | socketOptions() const

Class QAbstractSocket:

bool | bind(const QHostAddress &address, quint16 port, QAbstractSocket::BindMode mode)
bool | bind(quint16 port, QAbstractSocket::BindMode mode)
QAbstractSocket::PauseModes | pauseMode() const
virtual void | resume()
void | setPauseMode(QAbstractSocket::PauseModes pauseMode)

Class QNetworkCacheMetaData:

void | swap(QNetworkCacheMetaData &other)

Class QNetworkSession:

void | usagePoliciesChanged(QNetworkSession::UsagePolicies usagePolicies)

Class QTcpServer:

void | acceptError(QAbstractSocket::SocketError socketError)
void | pauseAccepting()
void | resumeAccepting()

Class QSslCipher:

void | swap(QSslCipher &other)

Class QSslKey:

void | swap(QSslKey &other)

Class QSslError:

void | swap(QSslError &other)

Class QNetworkAddressEntry:

void | swap(QNetworkAddressEntry &other)

Class QSslSocket:

virtual void | resume() override
long | sslLibraryVersionNumber()
QString | sslLibraryVersionString()

Class QSslCertificate:

QList<QSslCertificateExtension> | extensions() const
QList<QByteArray> | issuerInfoAttributes() const
QList<QByteArray> | subjectInfoAttributes() const
void | swap(QSslCertificate &other)
QString | toText() const
QList<QSslError> | verify(QList<QSslCertificate> certificateChain, const QString &hostName)

Class QNetworkConfiguration:

void | swap(QNetworkConfiguration &other)

Class QNetworkAccessManager:

void | clearAccessCache()

Class QNetworkRequest:

void | swap(QNetworkRequest &other)

Class QNetworkProxy:

bool | hasRawHeader(const QByteArray &headerName) const
QVariant | header(QNetworkRequest::KnownHeaders header) const
QByteArray | rawHeader(const QByteArray &headerName) const
QList<QByteArray> | rawHeaderList() const
void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
void | setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
void | swap(QNetworkProxy &other)

Class QNetworkCookieJar:

virtual bool | deleteCookie(const QNetworkCookie &cookie)
virtual bool | insertCookie(const QNetworkCookie &cookie)
virtual bool | updateCookie(const QNetworkCookie &cookie)
virtual bool | validateCookie(const QNetworkCookie &cookie, const QUrl &url) const

Class QHostAddress:

bool | isLoopback() const
uint | qHash(const QHostAddress &key, uint seed)

Class QNetworkReply:

virtual void | ignoreSslErrorsImplementation(const QList<QSslError> &errors)
virtual void | setSslConfigurationImplementation(const QSslConfiguration &configuration)
virtual void | sslConfigurationImplementation(QSslConfiguration &configuration) const

Class QSslConfiguration:

void | swap(QSslConfiguration &other)

Class QHttpPart:

void | swap(QHttpPart &other)

Class QNetworkInterface:

void | swap(QNetworkInterface &other)

Class QNetworkCookie:

void | normalize(const QUrl &url)
bool | operator==(const QNetworkCookie &other) const
void | swap(QNetworkCookie &other)

Class QPrinterInfo:

QString | description() const
QString | location() const
QString | makeAndModel() const
QPrinterInfo | printerInfo(const QString &printerName)

Class QSensor:

bool | isFeatureSupported(QSensor::Feature feature) const

Class QRotationReading:

void | setFromEuler(qreal x, qreal y, qreal z)

Class QSensorBackend:

virtual bool | isFeatureSupported(QSensor::Feature feature) const

Class QSqlDriver:

void | notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload)

Class QSqlTableModel:

bool | isDirty() const
QSqlRecord | record(int row) const
virtual bool | selectRow(int row)

Class QUiLoader:

QString | errorString() const

Class QSignalSpy:

bool | wait(int timeout)

Class QTouchEventSequence:

QTest::QTouchEventSequence & | move(int touchId, const QPoint &pt, QWindow *window)
QTest::QTouchEventSequence & | press(int touchId, const QPoint &pt, QWindow *window)
QTest::QTouchEventSequence & | release(int touchId, const QPoint &pt, QWindow *window)

Class QWidget:

QBackingStore * | backingStore() const
QPixmap | grab(const QRect &rectangle)
virtual bool | hasHeightForWidth() const
QWindow * | windowHandle() const

Class QTabBar:

virtual QSize | minimumTabSizeHint(int index) const

Class QAbstractItemDelegate:

virtual void | destroyEditor(QWidget *editor, const QModelIndex &index) const

Class QComboBox:

void | currentTextChanged(const QString &text)

Class QColorDialog:

QColor | standardColor(int index)

Class QHeaderView:

QHeaderView::ResizeMode | sectionResizeMode(int logicalIndex) const
bool | sectionsClickable() const
bool | sectionsMovable() const
void | setSectionResizeMode(QHeaderView::ResizeMode mode)
void | setSectionResizeMode(int logicalIndex, QHeaderView::ResizeMode mode)
void | setSectionsClickable(bool clickable)
void | setSectionsMovable(bool movable)

### New Functions in Namespaces

void | keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier, int delay)
void | keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
void | keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
void | keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier, int delay)
void | keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
void | keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier, int delay)
void | keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
void | keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier, int delay)
void | mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPoint pos, int delay)
void | mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPoint pos, int delay)
void | mouseMove(QWindow *window, QPoint pos, int delay)
void | mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPoint pos, int delay)
void | mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPoint pos, int delay)
bool | qWaitForWindowActive(QWidget *widget, int timeout)
bool | qWaitForWindowActive(QWindow *window, int timeout)
bool | qWaitForWindowExposed(QWidget *widget, int timeout)
bool | qWaitForWindowExposed(QWindow *window, int timeout)
QTest::QTouchEventSequence | touchEvent(QWindow *window, QTouchDevice *device, bool autoCommit)

### New Global Functions

bool | operator!=(const QMetaMethod &m1, const QMetaMethod &m2)
const QPointF | operator+(const QPointF &point)
const QPoint | operator+(const QPoint &point)
bool | operator==(const QMetaMethod &m1, const QMetaMethod &m2)
uint | qHash(const QHostAddress &key, uint seed)
uint | qHash(const QUuid &uuid, uint seed)
uint | qHash(const QTime &key, uint seed)
uint | qHash(const QDate &key, uint seed)
uint | qHash(const QDateTime &key, uint seed)
uint | qHash(const QPersistentModelIndex &index, uint seed)
uint | qHash(const QPair<T1, T2> &key, uint seed)
uint | qHash(const T *key, uint seed)
uint | qHash(QLatin1String key, uint seed)
uint | qHash(const QBitArray &key, uint seed)
uint | qHash(const QStringRef &key, uint seed)
uint | qHash(const QString &key, uint seed)
uint | qHash(const QByteArray &key, uint seed)
uint | qHash(const QChar key, uint seed)
uint | qHash(qint64 key, uint seed)
uint | qHash(quint64 key, uint seed)
uint | qHash(long key, uint seed)
uint | qHash(ulong key, uint seed)
uint | qHash(int key, uint seed)
uint | qHash(uint key, uint seed)
uint | qHash(short key, uint seed)
uint | qHash(ushort key, uint seed)
uint | qHash(signed char key, uint seed)
uint | qHash(uchar key, uint seed)
uint | qHash(char key, uint seed)
QtMessageHandler | qInstallMessageHandler(QtMessageHandler handler)
QtMessageHandler | qInstallMessageHandler(QtMessageHandler handler)
void | qRegisterStaticPluginFunction(QStaticPlugin plugin)
void | qSetMessagePattern(const QString &pattern)
void | qSetMessagePattern(const QString &pattern)

### New Macros

| QFINDTESTDATA(filename)
| QFINDTESTDATA(filename)
| QTEST_GUILESS_MAIN(TestClass)
| QTEST_GUILESS_MAIN(TestClass)
| QTRY_COMPARE(actual, expected)
| QTRY_COMPARE(actual, expected)
| QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)
| QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)
| QTRY_VERIFY(condition)
| QTRY_VERIFY(condition)
| QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)
| QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)
void | Q_ASSUME(expr)
void | Q_ASSUME(expr)
| Q_DECLARE_OPAQUE_POINTER(PointerType)
| Q_DECLARE_OPAQUE_POINTER(PointerType)
| Q_DECL_FINAL
| Q_DECL_FINAL
| Q_DECL_NOEXCEPT
| Q_DECL_NOEXCEPT
| Q_DECL_NOEXCEPT_EXPR(x)
| Q_DECL_NOEXCEPT_EXPR(x)
| Q_DECL_NOTHROW
| Q_DECL_NOTHROW
| Q_DECL_OVERRIDE
| Q_DECL_OVERRIDE
| Q_PLUGIN_METADATA(...)
| Q_PLUGIN_METADATA(...)
| Q_SET_OBJECT_NAME(Object)
| Q_SET_OBJECT_NAME(Object)
void | Q_UNREACHABLE
void | Q_UNREACHABLE

### New Enum Types

enum | BindFlag { DefaultForPlatform, ShareAddress, DontShareAddress, ReuseAddressHint }
enum | PauseMode { PauseNever, PauseOnSslErrors }
enum | ResourceFileSaveMode { SaveAllResourceFiles, SaveOnlyUsedResourceFiles, DontSaveResourceFiles }
enum | Action { CutAction, CopyAction, PasteAction, DeleteAction, ..., FormWindowSettingsDialogAction }
enum | ActionGroup { StyledPreviewActionGroup }
enum | GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature }
enum | SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption }
enum | UsagePolicy { NoPolicy, NoBackgroundTrafficPolicy }
enum | Feature { Buffering, AlwaysOn, GeoValues, FieldOfView, ..., Reserved }
enum | ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, ..., FullyDecoded }

### New Typedefs

typedef | QtMessageHandler
typedef | Int
typedef | QImageCleanupFunction
typedef | QImageCleanupFunction
typedef | QtMessageHandler

### New Properties

- applicationDisplayName : const
- socketOptions : const
- remainingTime : const

### New QML Types

A
  AttenuationModelInverse
  AttenuationModelLinear
  AudioCategory
  AudioEngine
  AudioListener
  AudioSample

C
  Canvas
  CanvasGradient
  Context2D

G
  GridMesh

P
  ParentAnimation
  PathAnimation
  PlayVariation

S
  ShaderEffectSource
  Sound
  SoundInstance

### New QML Properties

| columnSpacing
| inputMethod
| rowSpacing

### New QML Methods

| binding()

## Additions to Other Qt 5 Releases

- What's New in Qt 5.6
- What's New in Qt 5.5
- What's New in Qt 5.4
- What's New in Qt 5.3
- What's New in Qt 5.2
- What's New in Qt 5.1