| 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 <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. |
| |
| - 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. |