1Qt 5.13 introduces many new features and improvements as well as bugfixes 2over the 5.12.x series. For more details, refer to the online documentation 3included in this distribution. The documentation is also available online: 4 5https://doc.qt.io/qt-5/index.html 6 7The Qt version 5.13 series is binary compatible with the 5.12.x series. 8Applications compiled for 5.12 will continue to run with 5.13. 9 10Some of the changes listed in this file include issue tracking numbers 11corresponding to tasks in the Qt Bug Tracker: 12 13https://bugreports.qt.io/ 14 15Each of these identifiers can be entered in the bug tracker to obtain more 16information about a particular change. 17 18**************************************************************************** 19* Important Source Incompatible Changes * 20**************************************************************************** 21 22 - Moc generated files include the standard <memory> header file now. 23 A side effect of this is that code including the Moc output from within 24 a namespace will fail to compile. 25 26**************************************************************************** 27* Important Behavior Changes * 28**************************************************************************** 29 30 - The Qt resource system now supports compressing content using the 31 Zstandard (https://zstd.net) algorithm. Compared to zlib, it compresses 32 better for the same CPU time, so this algorithm is the default. 33 QResource::isCompressed() returns true for either compression algorithm. 34 Use QResource::compressionAlgorithm() to find out which algorithm to 35 decompress. QFile will automatically decompress using the correct 36 algorithm. 37 38 - QDataStream version bumped up to 19 to account for changes in the 39 serialization of QFont. 40 41 - [QTBUG-73048] Qt now enables by default warnings when using APIs 42 marked as deprecated. It is possible to disable such warnings by 43 defining the QT_NO_DEPRECATED_WARNINGS macro. The old 44 QT_DEPRECATED_WARNINGS macro which was used to enable this warning 45 now has no effect (warnings are automatically enabled). 46 47**************************************************************************** 48* Third-Party Code * 49**************************************************************************** 50 51 - Updated bundled SQLite to version 3.28.0. 52 - [QTBUG-72623] Updated DNS public suffix list 53 - [QTBUG-73883] libjpeg-turbo was updated to version 2.0.2 54 - Bundled libpng was updated to version 1.6.37 55 56**************************************************************************** 57* Platform-Specific Changes * 58**************************************************************************** 59 60 - X11 / XCB: 61 * [QTBUG-45375] QTabletEvent coordinates now come from AbsX/AbsY 62 valuators in the X11 event, in more precise 32.32 fixed-point format, 63 scaled to fit the virtual desktop. It's possible to revert to using 64 the legacy 16.16-format event_x/event_y coordinates as in previous 65 releases by setting the QT_XCB_TABLET_LEGACY_COORDINATES environment 66 variable. 67 * [plugins] platforminputcontexts now use libxkbcommon-compose APIs for 68 compose key input, instead of Qt's own implementation. 69 70 - Android 71 * Increased the minimum supported Android version to Android 5.0 72 (API level 21). 73 74 - Windows 75 * [QTBUG-47247][QTBUG-71855] Add a default setting for 76 hasBorderInFullScreen in QtPlatformHeaders, QWindowsWindowFunctions 77 * [QTBUG-57180] Removed confusing DirectWrite warning when loading 78 bitmap fonts. 79 80 - macOS 81 * Accessibility: VoiceOver now reads all lines in multiline text 82 components when navigating by lines. 83 84**************************************************************************** 85* Tools * 86**************************************************************************** 87 88 - configure & build system: 89 * Added --linker=[bfg,lld,gold] configure flag. 90 * The default OpenGL configuration changed from ANGLE to dynamic OpenGL. 91 * Added -schannel option to enable Schannel support on Desktop Windows. 92 * Added -coverage option for recording coverage data during execution 93 94 - CMake 95 * Added support for automatic linking of transitive dependencies in 96 static builds 97 98 - qmake 99 * [QTBUG-53654] Introduced the variables WINDOWS_TARGET_PLATFORM_VERSION 100 and WINDOWS_TARGET_PLATFORM_MIN_VERSION for overriding the default 101 values of WindowsTargetPlatformVersion and 102 WindowsTargetPlatformMinVersion in Visual Studio project files. 103 104 - RCC now supports compressing content using the Zstandard 105 (https://zstd.net) algorithm. Compared to zlib, it compresses better for 106 the same CPU time, so this algorithm is the default. To go back to the 107 previous algorithm, pass command-line option --compress-algo=zlib. 108 Compression levels range from 1 (fastest, least compression) to 19 109 (slowest, best compression). Level 0 tells the library to choose an 110 implementation-defined default. The default compression level is 111 "heuristic" (level -1): under this mode, RCC will attempt a very fast 112 compression (level 1) and check if the file was sufficiently compressed. 113 If it was, then RCC will compress again using an implementation-defined 114 level. 115 116**************************************************************************** 117* QtCore * 118**************************************************************************** 119 120 - New class QConcatenateTablesProxyModel, to concatenate the rows from 121 multiple source models. 122 - New class QTransposeProxyModel to swap rows and columns of the source 123 model. 124 - Added macros Q_DISABLE_MOVE and Q_DISABLE_COPY_MOVE complementing 125 Q_DISABLE_COPY. 126 - Qt Containers and meta type system now use C++11 type traits 127 (std::is_trivial, std::is_trivially_copyable and 128 std::is_trivially_destructible) to detect the class of a type not 129 explicitly set by Q_DECLARE_TYPEINFO. (Q_DECLARE_TYPEINFO is still 130 needed for QList.) 131 132 - QCommandLineParser: 133 * [QTBUG-58490] The application name (if set in QCoreApplication) is now 134 shown in error messages. 135 136 - QDateTime: 137 * [QTBUG-71030] Fixed race conditions in getting the local time zone. Qt now 138 has a mutex lock around all calls to tzset() and mktime(). Application 139 code should avoid calling those functions directly. 140 141 - QFile: 142 * Made QFile::copy() issue a filesystem-synchronization system call, 143 which would make it less likely to result in incomplete or corrupt 144 files if the system reboots or uncleanly shuts down soon after the 145 function returns. New code is advised to use QSaveFile instead, which 146 also allows display of a progress report while copying. 147 148 - QFileInfo: 149 * [QTBUG-63970][QTBUG-30401][QTBUG-20791] Fixed resolving of symbolic 150 links to UNC shares on NTFS file systems. 151 152 - QJsonArray: 153 * [QTBUG-32793] Added cbegin() and cend() methods for compatibility with 154 the Standard Library container concepts. 155 156 - QJsonDocument: 157 * [QTBUG-71445] Added the ability to stream QJsonDocument into and from 158 QDataStream if it is contained in a QVariant. 159 160 - QLocale: 161 * Added support for Western Balochi, Ido, Lojban, Sicilian and 162 Southern Kurdish. 163 * [QTBUG-71445] Added a const overload for formattedDataSize(). 164 * [QTBUG-782] Added toLong() and toULong(). 165 166 - QMetaObject: 167 * Non-copyable lambdas can now be used with invokeMethod(). For 168 consistency reasons, the functor object is now always moved. 169 170 - QMimeDatabase: 171 * Added configure option -no-mimetype-database that tells Qt not to 172 bundle its own copy of the XDG MIME database. If this option is 173 passed, QMimeDatabase will only work if there's a system copy in 174 $XDG_DATA_DIRS/mime. This option is useful for Linux distributions 175 that ensure the data is always present. 176 177 - QSettings: 178 * Added QSettings(Scope...) constructor to avoid using #ifdef in Qt 179 applications. 180 181 - QStringListModel: 182 * [QTBUG-69807] Implemented moveRows 183 184 - QUrlQuery: 185 * QUrlQuery now provides an initializer list constructor. It can be 186 created using a list of key/value pairs. 187 188 - QVector: 189 * QVector no longer requires a default constructor for its template 190 argument. 191 192**************************************************************************** 193* QtDBus * 194**************************************************************************** 195 196 - Matching namespace prefixes using QDBusServiceWatcher (instead of full 197 service names) is now possible. For example, "com.example.backend1*" 198 will match "com.example.backend1", "com.example.backend1.foo" and 199 "com.example.backend1.foo.bar", but not "com.example.backend12". 200 201**************************************************************************** 202* QtGui * 203**************************************************************************** 204 205 - CSS: 206 * Added support for HSL/HSLA colors. 207 * Fix the range of the hue parameter when parsing a color given in HSL 208 or HSV. 209 210 - QFont: 211 * Add setFamilies()/families() to support use of font families with 212 commas and quotes in their name. 213 214 - QImage: 215 * [QTBUG-41176] Added support for 16-bit grayscale format. 216 * A new method convertTo has been added to change the format of a QImage 217 in place. 218 219 - QPainterPath: 220 * Added clear(), reserve(), capacity(). clear() removes allocated 221 QPainterPath elements but preserves allocated memory, which can be 222 useful for application with complex paths that are often recreated. 223 reserve() and capacity() follow QVector semantics. 224 225 - QWindow: 226 * [QTBUG-67903][QTBUG-52944] QWindow::transientParent is now a property. 227 228 - Text: 229 * [QTBUG-60813] Deprecated QFont::lastResortFamily() and 230 QFont::lastResortFont() which are not in use in Qt 5 and did not 231 provide any useful information. 232 * [QTBUG-22813] Added support for setting the font's style name in 233 QTextCharFormat. 234 235**************************************************************************** 236* QtNetwork * 237**************************************************************************** 238 239 - TLS (SSL): 240 * Support for SSLv2 and SSLv3 sockets has been dropped, as per RFC 6176 241 (2011) and RFC 7568 (2015). 242 * The Schannel backend now supports ALPN and thus HTTP/2. 243 * [QTBUG-62637] Added support for Schannel on Desktop Windows. To build 244 Qt with Schannel support use '-schannel' during configure. 245 * Added class QOcspResponse as a part of OCSP stapling support. 246 * [QTBUG-12812][QTBUG-17158] Added OCSP-stapling support for OpenSSL 247 backend 248 * [QTBUG-71828][QTBUG-73289] Fixed SSL verification when connecting to IP 249 address (no host name) if that IP address is listed in the certificate. 250 251**************************************************************************** 252* QtTestLib * 253**************************************************************************** 254 255 - Added QTest::toString(const QModelIndex &idx) 256 257 - Removed support for GPU_BLACKLIST files. Reimplementations or 258 equivalents of QTEST_MAIN() should remove their uses of 259 QTEST_ADD_GPU_BLACKLIST_SUPPORT and its _DEFS; they are still vacuously 260 defined, but serve no remaining purpose and shall be undefined in due 261 course. 262 263**************************************************************************** 264* QtWidgets * 265**************************************************************************** 266 267 - QAbstractScrollArea: 268 * [QTBUG-69120] QTableView/QTreeView, when reporting their 269 viewportSizeHint(), now correctly take into account their scroll 270 bars' visibility and visibilityPolicy. 271 272 - QHeaderView: 273 * dataChanged now respects the given roles to avoid useless 274 recomputations. 275 276 - QLabel: 277 * Minor performance improvement when painting a label with an image. 278 279 - QListWidget: 280 * [QTBUG-69807] Implemented moveRows in model 281 * [QTBUG-68977] Sped up handling of hidden items when working with large 282 data sets. 283 284 - QPlainTextEdit: 285 * Added QRegularExpression find() method overload. 286 287 - QTextEdit: 288 * Added QRegularExpression find() method overload. 289 290 - QTreeView: 291 * Added expandRecursively() to expand all items below a given index. 292 293 - QWidgetTextControlPrivate: 294 * [QTBUG-69735] Moved cursor selection to start. 295 296**************************************************************************** 297* QtSql * 298**************************************************************************** 299 300 - SQLite: 301 * [QTBUG-63498] The json1-extension for the SQLite3 plugin is now enabled 302 by default. 303 304 - PostgreSQL: 305 * QSqlDatabase is now stricter about table names when used with record() 306 and primaryIndex(). If the tablename was not quoted when it was 307 created, then the table name passed to record() and primaryIndex() 308 needs to be in lower case so that PostgreSQL is able to find it. 309