Revision control
++ Qt 5.14 introduces many new features and improvements as well as bugfixes
++ over the 5.13.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.14 series is binary compatible with the 5.13.x series.
++ Applications compiled for 5.13 will continue to run with 5.14.
++
++ Some of the changes listed in this file include issue tracking numbers
++ corresponding to tasks in the Qt Bug Tracker:
++
++
++ Each of these identifiers can be entered in the bug tracker to obtain more
++ information about a particular change.
++
++ ****************************************************************************
++ * Important Behavioral Change *
++ ****************************************************************************
++
++ - [QTBUG-47644] WrapWord now correctly prefers line breaks between words
++ in Korean text. WrapAnywhere can still be used to get breaks between
++ syllables instead.
++
++ ****************************************************************************
++ * Potentially Source-Incompatible Changes *
++ ****************************************************************************
++
++ - qstringlist.h no longer includes qregexp.h.
++ - Prefixing Q_NAMESPACE with an export macro may no longer work. Use the
++ new Q_NAMESPACE_EXPORT macro for that use case.
++
++ ****************************************************************************
++ * QtCore *
++ ****************************************************************************
++
++ - Added support of deduction guides for QPair
++ - Added new Qt::SplitBehavior, for use as eventual replacement for
++ QString::SplitBehavior.
++ - Added the new Q_NAMESPACE_EXPORT macro. It can be used just like
++ Q_NAMESPACE to add meta-object information to a namespace; however it
++ also supports exporting of such information from shared libraries.
++ - [QTBUG-15234] Qt installations on the host system can now be relocated,
++ i.e. moved to other directories.
++
++ - JSON:
++ * Added overloads of functions taking key strings as QStringView; in
++ QJsonObject, QJsonValue and QJsonDocument.
++
++ - QAtomicInteger:
++ * Added loadRelaxed() and storeRelaxed(), to be used as replacements of
++ load() / store().
++
++ - QAtomicPointer:
++ * Added loadRelaxed() and storeRelaxed(), to be used as replacements of
++ load() / store().
++
++ - QBasicTimer:
++ * QBasicTimer is now a move-only class. Copying is now deprecated and
++ will be removed in Qt 6.
++ * Added swap() member and free function.
++
++ - QByteArray::operator[]:
++ * Detach immediately, instead of deferring until modification via
++ the returned QByteRef.
++ * Deprecate reliance on its implicit resizing behavior. Support for
++ writing past the end of QByteArray shall be removed in a future
++ version of Qt.
++
++ - QCalendar:
++ * Added QCalendar to support diverse calendars, supported by
++ implementing QCalendarBackend.
++ * Added support for Julian and Milankovic calendars. These are enabled
++ by default, except in bootstrap builds.
++ * Added support for the Jalali (Persian or Solar Hijri) calendar,
++ controlled by feature jalalicalendar.
++ * Added support for the Islamic Civil calendar, controlled by feature
++ islamiccivilcalendar, with locale data that can be shared with other
++ implementations, controlled by feature hijricalendar.
++
++ - QChar:
++ * Added FormFeed (FF) special character.
++
++ - QCollator:
++ * Added support for QStringView.
++ * The default QCollator now uses the system's collation locale, rather
++ than the system locale itself.
++
++ - QDataStream:
++ * Enumerations can now be serialized through QDataStream without the
++ need of manually defining streaming operators.
++
++ - QDate:
++ * [QTBUG-64485] Added startOfDay() and endOfDay() methods to provide a
++ QDateTime at the start and end of a given date, taking account of any
++ time skipped by transitions, e.g. a DST spring-forward, which can lead
++ to a day starting at 01:00 or ending just before 23:00.
++ * Allow choice of calendar in various operations, with Gregorian
++ remaining the default.
++
++ - QDateTime:
++ * Invalid datetimes are now treated as equal and less than all valid
++ ones. They could previously be found equal to valid datetimes.
++
++ - QDir:
++ * Remove Windows specific long path markers when handling file paths
++ with native separators.
++
++ - QEasingCurve:
++ * QEasingCurve now properly streams all the data needed to QDataStream.
++
++ - QFileInfo:
++ * [QTBUG-75869] Introduced QFileInfo::isJunction() to detect NTFS Junctions
++ on Windows.
++
++ - QHash:
++ * Added range constructor.
++
++ - QJsonObject:
++ * Added insert(), remove(), and take() overloads taking QLatin1String.
++
++ - QLatin1Char:
++ * Comparison against char now works even in QT_NO_CAST_FROM_ASCII
++ builds.
++
++ - QLatin1Literal:
++ * The undocumented QLatin1Literal type alias for QLatin1String is now
++ deprecated. Use QLatin1String instead.
++
++ - QLatin1String:
++ * Added indexOf().
++ * Added contains().
++ * Added lastIndexOf().
++
++ - QLineF:
++ * added QLineF::intersects() as a replacement for QLineF::intersect()
++
++ - QLinkedList:
++ * Added range constructor.
++
++ - QList:
++ * Added range constructor.
++
++ - QLocale:
++ * The system locale now knows what to use for collation,
++ QLocale::system().collation().
++ * The NaN obtained when reading "nan" as a floating-point value is now
++ quiet rather than signaling.
++ * The system locale's UI languages list now includes, as for that of an
++ ordinary locale, the results of adding likely sub-tags from each
++ locale name, and of removing some, where this doesn't change which
++ locale is specified. This gives searches for translation files a
++ better chance of finding a suitable file.
++
++ - QMetaObject:
++ * [QTBUG-38876] Some internal members of the QMetaObject class have
++ changed types. Those members are not public API and thus should not
++ cause source incompatibilities.
++
++ - QMultiHash:
++ * Added range constructor.
++
++ - QMutex:
++ * Added QRecursiveMutex as a replacement of QMutex(QMutex::Recursive).
++
++ - QPoint/QPointF:
++ * Added transposed().
++
++ - QPointer:
++ * Added a free swap function.
++
++ - QSet:
++ * Added range constructor.
++
++ - QSharedPointer:
++ * Overloads of qSharedPointerObjectCast have been added to work on
++ std::shared_ptr.
++ * The swap overload for QSharedPointer in the std namespace has been
++ removed; a new overload has been added in the Qt namespace.
++
++ - QSize/QSizeF:
++ * Added grownBy(QMargin(F))/shrunkBy(QMargin(F)).
++
++ - QString:
++ * The behavior of operator[] to allow implicit resizing of the string
++ has been deprecated, and will be removed in a future version of Qt.
++ * QString::operator[] detaches immediately. Previously, the detach was
++ delayed until a modification was made to the string through the
++ returned QCharRef.
++ * QString::arg(QString, ..., QString) can now be called with more than
++ nine arguments, as well as with QStringViews.
++
++ - QString/QStringRef:
++ * The split functions now optionally take Qt::SplitBehavior.
++
++ - QStringList:
++ * Added range constructor.
++ * Added QStringView overloads of join(), filter(), and
++ replaceInStrings().
++
++ - QStringView:
++ * Added indexOf().
++ * Added contains().
++ * Added lastIndexOf().
++ * Deprecated the (undocumented) QStringViewLiteral macro. Just use u""
++ or QStringView(u"") instead.
++
++ - QStringView/QLatin1String:
++ * Added arg(), taking arbitrarily many strings.
++
++ - QTextStream:
++ * The NaN obtained when reading "nan" as a floating-point value is now
++ quiet rather than signaling.
++
++ - QTimeZone:
++ * [QTBUG-75565] The TZDB back-end now recognizes the contents of /etc/TZ
++ as a fall-back for $TZ (as used by uClibc).
++
++ - QVarLengthArray:
++ * Added range constructor.
++ * Added a qHash overload.
++
++ - QVariant:
++ * Fixed a bug that caused isNull() to be true after downcasting a
++ QObject* payload using convert().
++
++ - QVector:
++ * Added range constructor.
++
++ - QWeakPointer:
++ * The data() function has been deprecated.
++ * A swap overload has been added.
++
++ - QtGlobal:
++ * Add new macros QT_DEPRECATED_VERSION and QT_DEPRECATED_VERSION_X to
++ conditionally display deprecation warnings
++ * Added qExchange(), a drop-in for C++14's std::exchange()
++
++ - Windows:
++ * QSysInfo::prettyProductName() now returns a version including the
++ Windows 10 release id or Windows 7 build number respectively,
++ resembling the version string displayed by the winver tool.
++
++ ****************************************************************************
++ * QtDBus *
++ ****************************************************************************
++
++ - QDBusAbstractInterface:
++ * The call() and asyncCall() methods now accept more than eight QVariant
++ arguments.
++
++ - QDBusObjectPath:
++ * Added explicit cast operator to QVariant.
++
++ ****************************************************************************
++ * QtGui *
++ ****************************************************************************
++
++ - QColor:
++ * Added QColorConstants, a namespace containing constexpr QColor
++ instances.
++
++ - A QColorSpace class has been added, and color spaces are now parsed from
++ PNG and JPEG images. No automatic color space conversion is done
++ however, and applications must request it.
++ - Added support for filtering Vulkan debug messages in QVulkanInstance.
++ This is especially useful for processing or suppressing messages from
++ the validation layers.
++ - Obsolete constructors and accessors in QWheelEvent now have proper
++ deprecation macros, and are no longer in use in any Qt modules.
++ What is left is intended to be compatible with planned changes in Qt 6.
++
++ - QFont:
++ * [QTBUG-77908] Fixed kerning error with certain fonts.
++ * [QTBUG-76239] Fixed an issue where application fonts would be parsed
++ multiple times, causing some unnecessary overhead when during
++ application startup.
++ * [QTBUG-46322] Resolving a font that just has a family set with
++ families set will prepend the family to the families so that it is
++ still the first preference for the font.
++
++ - QImage:
++ * [QTBUG-42540], [QTBUG-68787] Loading of image files having a file
++ name suffix for a different image file type has been
++ fixed. QImageReader will now ask the suffix format handler to
++ confirm the file contents (canRead()), and fall back to normal
++ file content recognition on failure. This implies a slight
++ behavior change in QImageReader::loopCount(), ::imageCount() and
++ ::nextImageDelay(): For an unreadable file with a recognized
++ suffix, they would earlier return 0, while they now will
++ return -1, i.e. error, as per the documentation.
++
++ - QPainter:
++ * HighQualityAntialiasing and NonCosmeticDefaultPen are marked as
++ deprecated and don't have an effect anymore
++
++ - QTextDocument:
++ * [QTBUG-36152] CSS styling of table cell borders (styling <td> and <th>
++ elements) is now supported during HTML import and export, including
++ border-color, border-width and border-style. Setting the table's
++ border-width to a value >= 1 and enabling border-collapse will now draw
++ a simple, clean table grid (1px) with an outer border of the specified
++ width and color. A manual test was added, which allows editing HTML
++ with live preview.
++ * [QTBUG-43589] Fixed incorrect rounding of widths of variable-width
++ columns in tables, to avoid border drawing artifacts.
++ * [QTBUG-78318] QTextFrameFormat margins, padding and borders are now
++ scaled to device coordinates, and thus correctly sized on high-dpi
++ displays and printers.
++ * Markdown (CommonMark or GitHub dialect) is now a supported format for
++ reading into and writing from QTextDocument, via the setMarkdown() and
++ toMarkdown() functions. We do not guarantee that every markdown
++ document can be re-written exactly as it was read; but that does work
++ in many cases, and it's OK to report bugs about cases that don't work.
++
++ - Touch:
++ * [QTBUG-77142] When a stationary touchpoint contains some "interesting"
++ property change (pressure or velocity, so far), it is delivered normally.
++
++ ****************************************************************************
++ * QtNetwork *
++ ****************************************************************************
++
++ - QAuthenticator:
++ * [QTBUG-4117] Add support for SPNEGO/Negotiate
++
++ - QHostInfo:
++ * Added move contructor.
++
++ - QNetworkAccessManager:
++ * [QTBUG-69477] Don't fail when FTP does not implement the HELP command.
++ * Added setAutoDeleteReplies to QNetworkAccessManager to enable the
++ AutoDeleteReplyOnFinishAttribute attribute for all QNetworkRequests
++ that are passed to QNetworkAccessManager.
++
++ - QNetworkRequest:
++ * Added the AutoDeleteReplyOnFinishAttribute attribute to
++ QNetworkRequest, which makes QNetworkAccessManager delete the
++ QNetworkReply after it has emitted the "finished" signal.
++ * Add an ability to configure HTTP/2 protocol
++
++ - QSslKey:
++ * Key data is cleared as soon as possible when move-assigning.
++
++ - QSslSocket:
++ * [QTBUG-72016] Added runtime validation of the SSL private key when it
++ is loaded through a file path.
++
++ ****************************************************************************
++ * QtSql *
++ ****************************************************************************
++
++ - QPSQL:
++ * [QTBUG-79033][QTBUG-79064] added support for PostgreSQL 12
++
++ - QSqlite:
++ * Updated to v3.30.1
++
++ - QSqlite2:
++ * Marked QSQLITE2 plugin as obsolete - it will be removed with Qt6
++ together with the QTDS plugin
++
++ ****************************************************************************
++ * QtTestLib *
++ ****************************************************************************
++
++ - Comparison of QImage, QPixmap now checks for the device pixel ratio.
++ - It is now possible to perform static initialization before QApplication
++ instantiation by implementing a initMain() function in the test class.
++
++ ****************************************************************************
++ * QtWidgets *
++ ****************************************************************************
++
++ - QActionGroup:
++ * Added new exclusionPolicy property. Set it to ExclusiveOptional to
++ allow unchecking the active checkable action in an exclusive group.
++
++ - QCalendarWidget:
++ * Allow choice of calendar, with Gregorian remaining the default.
++
++ - QComboBox:
++ * Two new signals textHighlighted() and textActivated() were added to
++ replace highlighted()/activated() QString overloads.
++
++ - QDateTimeEdit:
++ * Allow choice of calendar, with Gregorian remaining the default.
++
++ - QFileDialog:
++ * The widgets-based dialog now remembers the selected files when
++ navigating the history.
++
++ - QFormLayout:
++ * Honor the vertical expanding state of a widget inside a QFormLayout.
++
++ - QGraphicsWidget:
++ * Added QMarginsF overloads of setContentsMargins() and
++ setWindowFrameMargins().
++
++ - QGroupBox:
++ * [QTBUG-259389 Always disable children of a checkable, unchecked group
++ box before showing.
++
++ - QLabel:
++ * Markdown is now a supported textFormat for QLabel.
++
++ - QLayout:
++ * Prevent clipping of group box titles on macOS (and similar styles that
++ draw into layout margins)
++
++ - QLineEdit:
++ * Behavior change: now the editingFinished signal is emitted only once
++ after the line edit content was edited.
++ * The getTextMargins() member function has been deprecated in favor of
++ textMargins().
++
++ - QStyle:
++ * Style sheets now only use the part of the stylesheet font that it
++ knows about. The remaining will be resolved/inherited from the
++ context.
++
++ - QTextBrowser:
++ * Markdown is now a supported format. QTextBrowser::setSource() detects
++ the common file extensions (.md, .mkd and .markdown). In case it
++ cannot be detected that way, setSource() now takes an optional
++ ResourceType enum argument so that the type can be overridden.
++ QTextBrowser inherits all the QTextEdit features: if readOnly is set
++ to false, the user can perform the editing operations that QTextEdit
++ allows. If readOnly is set to true (the default), the user can click
++ Markdown hyperlinks to emit the anchorClicked() signal, as with HTML.
++
++ - QTextEdit:
++ * [QTBUG-75931] Added support for copy-pasting foreground brushes with
++ textures within same document.
++ * Markdown (CommonMark or GitHub dialect) is now a supported format,
++ via the markdown property. GitHub dialect is the default, and supports
++ all features such as hyperlinks, images, tables, lists, checklists, etc.
++ * If the text was loaded from a Markdown document that contains checkboxes,
++ the user can click on them to toggle the states. The cursor changes to
++ PointingHandCursor when the mouse is hovering over a checkbox.
++
++ - QTreeView:
++ * Don't emit clicked signal after a doubleClicked signal.
++
++ - QWidget:
++ * The getContentsMargins() member function has been deprecated in favor
++ of contentsMargins().
++
++ ****************************************************************************
++ * Platform Specific Changes *
++ ****************************************************************************
++
++ - Android
++ * Fixed an issue where an application installation would be irrecoverably
++ broken if power loss or a crash occurred during its first initialization
++ run.
++ * Make it easy to run Qt tests on Android. "$ make check" is all that's
++ needed to run a test on an Android device.
++ * Remove ant support from androiddeployqt
++ * Introduce "make apk" target, an easy way to create an apk.
++ * Android depends on NDK r20+
++ * Android multi arch build in one go, needed to support the new .aab
++ packaging format.
++ * -android-abis configure script parameter useful to compile Qt only for a
++ selected Android ABIs.
++ * Instead of bundling QML resources in assets and extracting them on first
++ start, Qt now creates an .rcc file and register it before invoking the
++ main function.
++ * Fixed regression that made it impossible for an application to use the
++ tap-and-hold gesture.
++
++ - Linux:
++ * Added a device spec for Raspberry Pi 4 (32-bit, V3D)
++ * Added a device spec for 64-bit i.MX8 systems (Vivante graphics stack)
++
++ - MinGW:
++ * [QTBUG-4155] Added a suffix to debug mode pkgconfig files.
++ * MinGW does not built with -debug-and-release mode anymore.
++ Instead, the binaries are built with -release -force-debug-info
++ -separate-debug-info.
++
++ - macOS:
++ * The drawableSize of Metal layers is no longer updated automatically on
++ window resize or screen change. Update the size manually in response to
++ resizeEvent(), or at the start of each frame, as needed.
++
++ - Mir:
++ * The Mir platform plugin has been removed: use the Wayland plugin when
++ connecting to a Mir display server.
++
++ - Windows:
++ * It is now possible to enable RTL mode by passing the option -platform
++ windows:reverse.
++ * [QTBUG-74748] Fixed a bug where it would be impossible to
++ request different faces of a font family after a specific type face
++ has been in use.
++
++ ****************************************************************************
++ * Third-Party Code *
++ ****************************************************************************
++ - Upgraded bundled Freetype version to 2.10.1.
++ - Build sqlite without SQLITE_OMIT_LOAD_EXTENSION
++ - Qt Gui: Added md4c markdown parser to src/3rdparty/md4c (MIT licensed).
++ - [QTBUG-79418] Updated double-conversion code to upstream version 3.1.5.
++ - [QTBUG-79420] libjpeg-turbo was updated to version 2.0.3
++ - [QTBUG-79418] Updated DNS public suffix list
++
++ ****************************************************************************
++ * Tools *
++ ****************************************************************************
++
++ - rcc:
++ * Added -d option to generate a dependency file.
++ * Added support for Python as output format.
++
++ ****************************************************************************
++ * configure *
++ ****************************************************************************
++
++ - Added the configure option -qtlibinfix-plugins to rename plugins
++ according to QT_LIBINFIX. This option is off by default.
++
++ ****************************************************************************
++ * CMake *
++ ****************************************************************************
++
++ - [QTBUG-38913][QTBUG-76562] Added ability to auto-import non-qml plugins
++ on CMake builds
++
++ ****************************************************************************
++ * qmake *
++ ****************************************************************************
++
++ - Installation targets do not ignore the exit code of QINSTALL and
++ QINSTALL_PROGRAM anymore.
++ - Introduced the variables LEX_DIR and YACC_DIR which determine the
++ location of lex/yacc output. Fixed parallel execution of lex/yacc for
++ debug_and_release builds.
++ - The syntax 'LIBS += -frameworkFoo', or 'LIBS += "-framework Foo"' is no
++ longer supported. Use the canonical 'LIBS += -framework Foo' instead.
++ - Fixed precompiled headers for the Clang compiler.
++
++ - Android:
++ * Remove gcc-style PCH directives from the android-clang mkspec.