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: https://doc.qt.io/qt-5/index.html 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: https://bugreports.qt.io/ 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