Qt 5.13 introduces many new features and improvements as well as bugfixes over the 5.12.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.13 series is binary compatible with the 5.12.x series. Applications compiled for 5.12 will continue to run with 5.13. 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 Source Incompatible Changes * **************************************************************************** - Moc generated files include the standard header file now. A side effect of this is that code including the Moc output from within a namespace will fail to compile. **************************************************************************** * Important Behavior Changes * **************************************************************************** - The Qt resource system now supports compressing content using the Zstandard (https://zstd.net) algorithm. Compared to zlib, it compresses better for the same CPU time, so this algorithm is the default. QResource::isCompressed() returns true for either compression algorithm. Use QResource::compressionAlgorithm() to find out which algorithm to decompress. QFile will automatically decompress using the correct algorithm. - QDataStream version bumped up to 19 to account for changes in the serialization of QFont. - [QTBUG-73048] Qt now enables by default warnings when using APIs marked as deprecated. It is possible to disable such warnings by defining the QT_NO_DEPRECATED_WARNINGS macro. The old QT_DEPRECATED_WARNINGS macro which was used to enable this warning now has no effect (warnings are automatically enabled). **************************************************************************** * Third-Party Code * **************************************************************************** - Updated bundled SQLite to version 3.27.1. - [QTBUG-72623] Updated DNS public suffix list - [QTBUG-73883] libjpeg-turbo was updated to version 2.0.2 - Bundled libpng was updated to version 1.6.37 **************************************************************************** * Platform-Specific Changes * **************************************************************************** - X11 / XCB: * [QTBUG-45375] QTabletEvent coordinates now come from AbsX/AbsY valuators in the X11 event, in more precise 32.32 fixed-point format, scaled to fit the virtual desktop. It's possible to revert to using the legacy 16.16-format event_x/event_y coordinates as in previous releases by setting the QT_XCB_TABLET_LEGACY_COORDINATES environment variable. * [plugins] platforminputcontexts now use libxkbcommon-compose APIs for compose key input, instead of Qt's own implementation. - Android * Increased the minimum supported Android version to Android 5.0 (API level 21). - Windows * [QTBUG-47247][QTBUG-71855] Add a default setting for hasBorderInFullScreen in QtPlatformHeaders, QWindowsWindowFunctions * [QTBUG-57180] Removed confusing DirectWrite warning when loading bitmap fonts. - macOS * Accessibility: VoiceOver now reads all lines in multiline text components when navigating by lines. **************************************************************************** * Tools * **************************************************************************** - configure & build system: * Added --linker=[bfg,lld,gold] configure flag. * The default OpenGL configuration changed from ANGLE to dynamic OpenGL. * Added -schannel option to enable Schannel support on Desktop Windows. * Added -coverage option for recording coverage data during execution - CMake * Added support for automatic linking of transitive dependencies in static builds - qmake * [QTBUG-53654] Introduced the variables WINDOWS_TARGET_PLATFORM_VERSION and WINDOWS_TARGET_PLATFORM_MIN_VERSION for overriding the default values of WindowsTargetPlatformVersion and WindowsTargetPlatformMinVersion in Visual Studio project files. - RCC now supports compressing content using the Zstandard (https://zstd.net) algorithm. Compared to zlib, it compresses better for the same CPU time, so this algorithm is the default. To go back to the previous algorithm, pass command-line option --compress-algo=zlib. Compression levels range from 1 (fastest, least compression) to 19 (slowest, best compression). Level 0 tells the library to choose an implementation-defined default. The default compression level is "heuristic" (level -1): under this mode, RCC will attempt a very fast compression (level 1) and check if the file was sufficiently compressed. If it was, then RCC will compress again using an implementation-defined level. **************************************************************************** * QtCore * **************************************************************************** - New class QConcatenateTablesProxyModel, to concatenate the rows from multiple source models. - New class QTransposeProxyModel to swap rows and columns of the source model. - Added macros Q_DISABLE_MOVE and Q_DISABLE_COPY_MOVE complementing Q_DISABLE_COPY. - Qt Containers and meta type system now use C++11 type traits (std::is_trivial, std::is_trivially_copyable and std::is_trivially_destructible) to detect the class of a type not explicitly set by Q_DECLARE_TYPEINFO. (Q_DECLARE_TYPEINFO is still needed for QList.) - QCommandLineParser: * [QTBUG-58490] The application name (if set in QCoreApplication) is now shown in error messages. - QDateTime: * [QTBUG-71030] Fixed race conditions in getting the local time zone. Qt now has a mutex lock around all calls to tzset() and mktime(). Application code should avoid calling those functions directly. - QFile: * Made QFile::copy() issue a filesystem-synchronization system call, which would make it less likely to result in incomplete or corrupt files if the system reboots or uncleanly shuts down soon after the function returns. New code is advised to use QSaveFile instead, which also allows display of a progress report while copying. - QFileInfo: * [QTBUG-63970][QTBUG-30401][QTBUG-20791] Fixed resolving of symbolic links to UNC shares on NTFS file systems. - QJsonArray: * [QTBUG-32793] Added cbegin() and cend() methods for compatibility with the Standard Library container concepts. - QJsonDocument: * [QTBUG-71445] Added the ability to stream QJsonDocument into and from QDataStream if it is contained in a QVariant. - QLocale: * Added support for Western Balochi, Ido, Lojban, Sicilian and Southern Kurdish. * [QTBUG-71445] Added a const overload for formattedDataSize(). * [QTBUG-782] Added toLong() and toULong(). - QMetaObject: * Non-copyable lambdas can now be used with invokeMethod(). For consistency reasons, the functor object is now always moved. - QMimeDatabase: * Added configure option -no-mimetype-database that tells Qt not to bundle its own copy of the XDG MIME database. If this option is passed, QMimeDatabase will only work if there's a system copy in $XDG_DATA_DIRS/mime. This option is useful for Linux distributions that ensure the data is always present. - QSettings: * Added QSettings(Scope...) constructor to avoid using #ifdef in Qt applications. - QStringListModel: * [QTBUG-69807] Implemented moveRows - QUrlQuery: * QUrlQuery now provides an initializer list constructor. It can be created using a list of key/value pairs. - QVector: * QVector no longer requires a default constructor for its template argument. **************************************************************************** * QtDBus * **************************************************************************** - Matching namespace prefixes using QDBusServiceWatcher (instead of full service names) is now possible. For example, "com.example.backend1*" will match "com.example.backend1", "com.example.backend1.foo" and "com.example.backend1.foo.bar", but not "com.example.backend12". **************************************************************************** * QtGui * **************************************************************************** - CSS: * Added support for HSL/HSLA colors. * Fix the range of the hue parameter when parsing a color given in HSL or HSV. - QFont: * Add setFamilies()/families() to support use of font families with commas and quotes in their name. - QImage: * [QTBUG-41176] Added support for 16-bit grayscale format. * A new method convertTo has been added to change the format of a QImage in place. - QPainterPath: * Added clear(), reserve(), capacity(). clear() removes allocated QPainterPath elements but preserves allocated memory, which can be useful for application with complex paths that are often recreated. reserve() and capacity() follow QVector semantics. - QWindow: * [QTBUG-67903][QTBUG-52944] QWindow::transientParent is now a property. - Text: * [QTBUG-60813] Deprecated QFont::lastResortFamily() and QFont::lastResortFont() which are not in use in Qt 5 and did not provide any useful information. * [QTBUG-22813] Added support for setting the font's style name in QTextCharFormat. **************************************************************************** * QtNetwork * **************************************************************************** - TLS (SSL): * Support for SSLv2 and SSLv3 sockets has been dropped, as per RFC 6176 (2011) and RFC 7568 (2015). * The Schannel backend now supports ALPN and thus HTTP/2. * [QTBUG-62637] Added support for Schannel on Desktop Windows. To build Qt with Schannel support use '-schannel' during configure. * Added class QOcspResponse as a part of OCSP stapling support. * [QTBUG-12812][QTBUG-17158] Added OCSP-stapling support for OpenSSL backend * [QTBUG-71828][QTBUG-73289] Fixed SSL verification when connecting to IP address (no host name) if that IP address is listed in the certificate. **************************************************************************** * QtTestLib * **************************************************************************** - Added QTest::toString(const QModelIndex &idx) - Removed support for GPU_BLACKLIST files. Reimplementations or equivalents of QTEST_MAIN() should remove their uses of QTEST_ADD_GPU_BLACKLIST_SUPPORT and its _DEFS; they are still vacuously defined, but serve no remaining purpose and shall be undefined in due course. **************************************************************************** * QtWidgets * **************************************************************************** - QAbstractScrollArea: * [QTBUG-69120] QTableView/QTreeView, when reporting their viewportSizeHint(), now correctly take into account their scroll bars' visibility and visibilityPolicy. - QHeaderView: * dataChanged now respects the given roles to avoid useless recomputations. - QLabel: * Minor performance improvement when painting a label with an image. - QListWidget: * [QTBUG-69807] Implemented moveRows in model * [QTBUG-68977] Sped up handling of hidden items when working with large data sets. - QPlainTextEdit: * Added QRegularExpression find() method overload. - QTextEdit: * Added QRegularExpression find() method overload. - QTreeView: * Added expandRecursively() to expand all items below a given index. - QWidgetTextControlPrivate: * [QTBUG-69735] Moved cursor selection to start. **************************************************************************** * QtSql * **************************************************************************** - SQLite: * [QTBUG-63498] The json1-extension for the SQLite3 plugin is now enabled by default. - PostgreSQL: * QSqlDatabase is now stricter about table names when used with record() and primaryIndex(). If the tablename was not quoted when it was created, then the table name passed to record() and primaryIndex() needs to be in lower case so that PostgreSQL is able to find it.