1Qt 5.15 introduces many new features and improvements as well as bugfixes 2over the 5.14.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.15 series is binary compatible with the 5.14.x series. 8Applications compiled for 5.14 will continue to run with 5.15. 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 Behavior Changes * 20**************************************************************************** 21 22 - Calling QList::insert() or removeAt() with an out of bounds index is 23 deprecated and will no longer be supported in Qt 6. 24 25**************************************************************************** 26* Potentially Binary-Incompatible Changes * 27**************************************************************************** 28 29 - QHash: 30 QHash's iterator category was changed from bidirectional iterator to 31 forward iterator. This may cause trouble if a library uses the 32 iterator category to alter functionality through tag dispatching. This 33 only applies when compiling the library or application with 34 QT_DISABLE_DEPRECATED_BEFORE=0x050F00 and the other with a lower value. 35 36**************************************************************************** 37* Deprecation Notice * 38**************************************************************************** 39 40 - The binary JSON representation is deprecated. The CBOR format should be 41 used instead. 42 43 - [QTBUG-80308] QUrl::topLevelDomain() was deprecated in 5.15 and will be 44 removed in 6.0 45 46 - QtNetwork: 47 * QNetworkConfigurationManager, QNetworkConfiguration and QNetworkSession 48 are deprecated, to be removed in Qt 6. 49 * QNetworkAccessManager::activeConfiguration, configuration and 50 setConfiguration are deprecated, to be removed in Qt 6. 51 * QNetworkAccessManager::networkAccessible, setNetworkAccessible and 52 the NetworkAccessibility enum are deprecated, to be removed in Qt 6. 53 * QLocalSocket::error() (the signal) is deprecated; superseded by 54 errorOccurred() 55 * QAbstractSocket::error() (the signal) is deprecated; superseded by 56 errorOccurred() 57 * QNetworkReply::error() (the signal) is deprecated; superseded by 58 errorOccurred() 59 * [QTBUG-80369] QSslSocket::sslErrors() (the getter) was deprecated and 60 superseded by sslHandshakeErrors() 61 62 - [QTBUG-81630][QTBUG-80312] QLinkedList is deprecated and will be moved 63 to Qt5Compat in Qt 6. It is recommended to use std::list instead. 64 65See also the various sections below, which include many more deprecations. 66 67**************************************************************************** 68* QtCore * 69**************************************************************************** 70 71 - QCalendar::monthsInYear(QCalendar::Unspecified) now returns 72 maximumMonthsInYear(). QCalendar::daysInYear() now makes clear that its 73 handling of unspecified year is undefined. 74 75 - Containers: 76 * Added operator-> to the key-value iterator for QHash/QMap. 77 78 - QAbstractItemModel: 79 * [QTBUG-72587] The match() method now supports the new 80 Qt::RegularExpression match flag value. This will allow users to use 81 either a string or a fully configured QRegularExpression when doing 82 searches. In the second case, the case sensitivity flag will be 83 ignored if passed. 84 85 - QByteArray: 86 * resize() will no longer shrink the capacity. That means resize(0) now 87 reliably preserves capacity(). 88 * Added the new fromBase64Encoding function. 89 * Added new flags to make fromBase64 / fromBase64Encoding strictly 90 validate their input, instead of skipping over invalid characters. 91 92 - QCborArray: 93 * Fixed an infinite loop when operator[] was called with an index larger 94 than the array's size plus 1. 95 96 - QCborMap: 97 * [QTBUG-83366] Fixed some issues relating to assigning elements from a 98 map to itself. 99 100 - QCborValue: 101 * fromCbor() now limits decoding to at most 1024 nested maps, arrays, 102 and tags to prevent stack overflows. This should be sufficient for 103 most uses of CBOR. An API to limit further or to relax the limit will 104 be provided in 5.15. Meanwhile, if decoding more is required, 105 QCborStreamReader can be used (note that each level of map and array 106 allocates memory). 107 108 - QDate: 109 * QDate::toString(Qt::DateFormat, QCalendar) no longer takes calendar 110 into account for Qt::TextDate. There was no matching support in 111 QDateTime and the locale-independent formats are intended to be 112 standard, rather than customized to the user. 113 114 - QDateTime: 115 * Added some missing QCalendar variants of QDateTime::toString(). 116 Included docs for QCalendar variants in both QDate and QDateTime. 117 118 - QFile: 119 * Introduce QFile::moveToTrash to allow applications to move files to 120 the trash. 121 122 - QFileInfo: 123 * [QTBUG-75869] Add QFileInfo::isJunction so that applications can 124 recognize NTFS file system entries as junctions 125 126 - QHash: 127 * Reverse iteration over QHash is now deprecated. 128 * insertMulti(), unite() and values(const Key &key) are now deprecated. 129 Please use QMultiHash instead. 130 131 - QJsonObject: 132 * Fixed a regression from 5.13 that incorrect results when assigning 133 elements from an object to itself. 134 135 - QLatin1String: 136 * Added compare(). 137 138 - QLibrary and QPluginLoader: 139 * [QTBUG-39642] Fixed a deadlock that would happen if the plugin or 140 library being loaded has load-time initialization code (C++ global 141 variables) that recursed back into the same QLibrary or QPluginLoader 142 object. 143 144 - QLocale: 145 * Deprecated toTime() variants taking a calendar. The calendar is 146 ignored in time parsing. 147 * Data used for currency formats in several locales and list patterns in 148 some locales have changed due to now parsing the CLDR data more 149 faithfully. 150 * [QTBUG-79902] Currency formats are now based on CLDR's accounting 151 formats, where they were previously mostly based (more or less by 152 accident) on standard formats. In particular, this now means negative 153 currency formats are specified, where available, where they (mostly) 154 were not previously. 155 156 - QMap: 157 * [QTBUG-35544] insertMulti(), unite(), values(Key), uniqueKeys(), 158 count(Key) is now deprecated. Please use QMultiMap instead. 159 160 - QObject: 161 * [QTBUG-76375] A logging category 162 qt.core.qmetaobject.connectslotsbyname was added, which will report 163 on the connections made by QMetaObject::connectSlotsByName(). 164 165 - QProcess: 166 * Overloads of start/execute/startDatached that parse a single command 167 string into program and arguments have been marked as deprecated. A 168 static helper splitCommand has been added to construct a QStringList 169 from a command string. 170 171 - QRandomGenerator: 172 * The system() random generator will now use the RDSEED instruction on 173 x86 processors whenever available as the first source of random data. 174 It will fall back to RDRAND and then to the system functions, in that 175 order. 176 177 - QRegularExpression: 178 * The escape(), wildcardToRegularExpression() and anchoredPattern() 179 functions now have overloads taking a QStringView parameter. 180 181 - QResource: 182 * Added uncompressedSize() and uncompressedData(), which will perform 183 any required decompression on the data, prior to returning (unlike 184 data() and size()). 185 186 - QSet: 187 * Reverse iteration over QSet is now deprecated. 188 189 - QStandardPaths: 190 * When used in a low-integrity process on Windows, 191 QStandardPaths::writableLocation returns respective low-integrity 192 paths. 193 194 - QString: 195 * Added QString::isValidUtf16. 196 197 - QStringView: 198 * Added QStringView::isValidUtf16. 199 * Added compare() overloads taking QLatin1String, QChar. 200 * Conversion from std::basic_string can now be constexpr (when 201 std::basic_string is). 202 203 - QTimeZone: 204 * The constructor can now handle general UTC-offset zone names. The 205 reported id() of such a zone shall be in canonical form, so might not 206 match the ID passed to the constructor. 207 208 - QXmlStream: 209 * QXmlStreamReader does now by default limit the expansion of entities 210 to 4096 characters. Documents where a single entity expands to more 211 characters than the limit are not considered well formed. The limit is 212 there to avoid DoS attacks through recursively expanding entities when 213 loading untrusted content. The limit can be changed through the 214 QXmlStreamReader::setEntityExpansionLimit() method. 215 216 - moc: 217 * Moc now correctly sets a non-null QMetaObject::superClass for 218 Q_GADGETs that inherit from a template which inherits another 219 Q_GADGET. 220 * [QTBUG-74521][QTBUG-76598] moc can now output a ".d" dep file that can 221 be consumed by other build systems. 222 223**************************************************************************** 224* QtGui * 225**************************************************************************** 226 227 - Extended QVulkanWindow to allow user to specify additional queues to be 228 created. 229 - Added API for starting interactive window resize and move operations 230 handled by the system. 231 232 - QClipboard: 233 * Support lazily-provided copying of data to the clipboard on macOS 234 235 - QCursor: 236 * [QTBUG-48701] QCursor::bitmap() and QCursor::mask() can now return 237 by-value instead of by-pointer. 238 239 - QFont: 240 * Deprecated QFont::ForceIntegerMetrics and QFont::OpenGLCompatible, 241 with the intention of removing them in Qt 6.0.0. 242 243 - QMarkdownWriter: 244 * [QTBUG-80603] Code blocks are no longer word-wrapped; the beginning 245 fence of a code block no longer has a space before the language string; 246 and the ending fence is no longer skipped in some cases where it was. 247 248 - QPdfWriter: 249 * New API to provide external document XMP metadata and attach files to 250 PDF. 251 252 - QTabletEvent: 253 * QTabletEvent::device() is deprecated, because the plan is to return 254 an object pointer in Qt 6 rather than an enum. The enum is now provided 255 by deviceType(). 256 * hiResGlobalX() and hiResGlobalY() are deprecated, because globalPosF() 257 has the same resolution. But globalPosF() (and several others) will 258 probably be renamed in Qt 6. The replacements are not in place yet. 259 * [QTBUG-77826] Local coordinates are now correct when the event is 260 delivered to a nested window on X11. 261 262 - Text: 263 * Fixed a problem where pixel sizes would be truncated before calculating 264 glyph positions. 265 * Fixed an issue with QFont::PreferNoShaping where boxes would appear in 266 place of unprintable characters. 267 * Fixed a problem where certain bold fonts would be synthetically 268 emboldened by Qt when using the Freetype font engine. 269 270 - Application palettes are now resolved against the platform's theme 271 palette, the same way widget palettes are resolved against their parents, 272 and the application palette. This means the application palette reflected 273 through QGuiApplication::palette() may not be exactly the same palette as 274 set via QGuiApplication::setPalette(). 275 276**************************************************************************** 277* QtWidgets * 278**************************************************************************** 279 280 - Added QStyleOptionTabV4 as a subclass of QStyleOptionTab so that the 281 tab's index information can be obtained. 282 283 - ItemViews: 284 * [QTBUG-76423] The convenience views QList/Table/TreeWidgetItem now 285 treat a default constructed QBrush or QSize as an empty QVariant which 286 allows resetting of the values set to it's default values. 287 288 - QApplication: 289 * The globalStrut property has been deprecated and will be removed from 290 Qt 6. 291 292 - QButtonGroup: 293 * Added signals idClicked/Pressed/Released/Toggled that replace the 294 deprecated signal overloads. 295 296 - QComboBox: 297 * QComboBox got a new property 'placeholderText' 298 * Support checkable items in styles that use a popup for the dropdown. 299 * the SizeAdjustPolicy value AdjustToMinimumContentLength is deprecated, 300 use AdjustToContents or AdjustToContentsOnFirstShow instead. 301 302 - QGraphicsView: 303 * Fixed a bug where hover events would not be delivered if the item was 304 added while blocked by a modal panel. 305 306 - QLabel: 307 * [QTBUG-48701] QLabel::pixmap() and QLabel::picture() can now return 308 by-value instead of by-pointer. 309 310 - QLineEdit: 311 * Inputmask X character now requires non-blank input. 312 313 - QMenu: 314 * a popup menu hides when a QWidgetAction added to it fires the 315 triggered signal. 316 317 - QShortcut: 318 * QShortcut ctor has now pointer to member function overloads 319 320 - QStyle: 321 * You can now set the CSS property 'icon' on a QPushButton to override 322 which icon to draw. 323 324 - QSystemTrayIcon: 325 * On macOS, clicking on the message will remove the notification. 326 327 - QTabWidget/QTabBar: 328 * Tabs can now be hidden with setTabVisible 329 330 - QWidget: 331 * Fonts and palette settings are inherited by children from their 332 parents even if the children have application-wide platform theme 333 overrides. 334 335 - QWizard: 336 * visitedPages has been deprecated, use visitedIds instead. 337 338**************************************************************************** 339* QtNetwork * 340**************************************************************************** 341 342 - A new signal introduced to report when a valid session ticket is received 343 (TLS 1.3) 344 345 - SSL: 346 * Removed OpenSSL 1.0.x support, now 1.1.x is required 347 * The minimum required version of OpenSSL is now 1.1.1. 348 349 - QSslCertificate: 350 * [QTBUG-72587] Add overload of fromPath that does not make use of 351 QRegExp and deprecate the QRegExp variant. 352 353**************************************************************************** 354* QtSql * 355**************************************************************************** 356 357 - QMYSQL: 358 * Removed support for MySql < 5.0 since 5.0 was released 14 years ago. 359 * The QMYSQL plugin can now be build with the MariaDB C connector libs 360 on Windows. 361 362 - QSqlDriver: 363 * The one-arg version of QSqlDriver::notifcation() is now deprecated. 364 365**************************************************************************** 366* QTestLib * 367**************************************************************************** 368 369 - The formerly named 'xunitxml' test reporter has been renamed to what it 370 actually is: a JUnit test reporter, and is now triggered by passing -o 371 junitxml to the test binary. 372 373**************************************************************************** 374* QtXml * 375**************************************************************************** 376 377 - [QTBUG-76177] SAX classes are now deprecated. Use QXmlStreamReader, 378 QXmlStreamWriter in QtCore instead. 379 380**************************************************************************** 381* Configure * 382**************************************************************************** 383 384 - Add switch "-coverage source-based" to enable clang's "source-based" code 385 coverage feature. This can be used for code coverage analysis. 386 387 - X11: 388 * [QTBUG-67277][QTBUG-30939] The minimal required version of libxcb now 389 is 1.11. 390 * [QTBUG-67277][QTBUG-30939] Removed -qt-xcb, -system-xcb, -xkb, 391 -xcb-xinput switches. 392 393**************************************************************************** 394* cmake * 395**************************************************************************** 396 397 - Fixed an issue where some Qt location and declarative plugins whose name 398 did not end with "Plugin" where not imported by the corresponding Qt 399 component package. 400 401**************************************************************************** 402* Third-Party Code * 403**************************************************************************** 404 405 - libjpeg-turbo was updated to version 2.0.4 406 407 - X11: 408 * [QTBUG-67277][QTBUG-30939] Removed all bundled XCB libs, with the 409 exception of xcb-xinput, which is not available on systems with libxcb 410 1.11. 411 412**************************************************************************** 413* Platform Specific Changes * 414**************************************************************************** 415 416 - Linux: 417 * Enable accessibility on Linux when Orca is started by hand 418 * [QTBUG-78754] Vulkan is now supported by eglfs (eglfs_viv backend) on 419 i.MX8 devices with the Vivante graphics stack. This is done via 420 VK_KHR_display so no windowing system is required. 421 422 - X11: 423 * [QTBUG-67277][QTBUG-30939] XKB and XInput2 now are mandatory 424 dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11 425 releases. XCB-XInput is not part of libxcb 1.11 releases, but Qt 426 builders can use the -bundled-xcb-xinput switch. 427 428 - Android: 429 * [REVERTED] Qt::MaximizeUsingFullscreenGeometryHint window flag is 430 now supported, and will make the window fullscreen, but keep the 431 system UI on-screen, with a translucent background color. 432 * [QTBUG-82120] Use native file dialog by default for open and save 433 operations. 434 435 - Windows: 436 * Fixed a bug where some fonts would not be accessible by 437 referencing their typographic name. 438 * Fixed a 2 pixel offset on glyphs when using color fonts or any 439 hinting preference other than the default (full) hinting. 440 441 - WebAssembly: 442 * Updated emscripten to version 1.39.8 443