| Qt 5.15 introduces many new features and improvements as well as bugfixes |
| over the 5.14.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.15 series is binary compatible with the 5.14.x series. |
| Applications compiled for 5.14 will continue to run with 5.15. |
| |
| 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 Behavior Changes * |
| **************************************************************************** |
| |
| - Calling QList::insert() or removeAt() with an out of bounds index is |
| deprecated and will no longer be supported in Qt 6. |
| |
| **************************************************************************** |
| * Potentially Binary-Incompatible Changes * |
| **************************************************************************** |
| |
| - QHash: |
| QHash's iterator category was changed from bidirectional iterator to |
| forward iterator. This may cause trouble if a library uses the |
| iterator category to alter functionality through tag dispatching. This |
| only applies when compiling the library or application with |
| QT_DISABLE_DEPRECATED_BEFORE=0x050F00 and the other with a lower value. |
| |
| **************************************************************************** |
| * Deprecation Notice * |
| **************************************************************************** |
| |
| - The binary JSON representation is deprecated. The CBOR format should be |
| used instead. |
| |
| - [QTBUG-80308] QUrl::topLevelDomain() was deprecated in 5.15 and will be |
| removed in 6.0 |
| |
| - QtNetwork: |
| * QNetworkConfigurationManager, QNetworkConfiguration and QNetworkSession |
| are deprecated, to be removed in Qt 6. |
| * QNetworkAccessManager::activeConfiguration, configuration and |
| setConfiguration are deprecated, to be removed in Qt 6. |
| * QNetworkAccessManager::networkAccessible, setNetworkAccessible and |
| the NetworkAccessibility enum are deprecated, to be removed in Qt 6. |
| * QLocalSocket::error() (the signal) is deprecated; superseded by |
| errorOccurred() |
| * QAbstractSocket::error() (the signal) is deprecated; superseded by |
| errorOccurred() |
| * QNetworkReply::error() (the signal) is deprecated; superseded by |
| errorOccurred() |
| * [QTBUG-80369] QSslSocket::sslErrors() (the getter) was deprecated and |
| superseded by sslHandshakeErrors() |
| |
| - [QTBUG-81630][QTBUG-80312] QLinkedList is deprecated and will be moved |
| to Qt5Compat in Qt 6. It is recommended to use std::list instead. |
| |
| See also the various sections below, which include many more deprecations. |
| |
| **************************************************************************** |
| * QtCore * |
| **************************************************************************** |
| |
| - QCalendar::monthsInYear(QCalendar::Unspecified) now returns |
| maximumMonthsInYear(). QCalendar::daysInYear() now makes clear that its |
| handling of unspecified year is undefined. |
| |
| - Containers: |
| * Added operator-> to the key-value iterator for QHash/QMap. |
| |
| - QAbstractItemModel: |
| * [QTBUG-72587] The match() method now supports the new |
| Qt::RegularExpression match flag value. This will allow users to use |
| either a string or a fully configured QRegularExpression when doing |
| searches. In the second case, the case sensitivity flag will be |
| ignored if passed. |
| |
| - QByteArray: |
| * resize() will no longer shrink the capacity. That means resize(0) now |
| reliably preserves capacity(). |
| * Added the new fromBase64Encoding function. |
| * Added new flags to make fromBase64 / fromBase64Encoding strictly |
| validate their input, instead of skipping over invalid characters. |
| |
| - QCborArray: |
| * Fixed an infinite loop when operator[] was called with an index larger |
| than the array's size plus 1. |
| |
| - QCborMap: |
| * [QTBUG-83366] Fixed some issues relating to assigning elements from a |
| map to itself. |
| |
| - QCborValue: |
| * fromCbor() now limits decoding to at most 1024 nested maps, arrays, |
| and tags to prevent stack overflows. This should be sufficient for |
| most uses of CBOR. An API to limit further or to relax the limit will |
| be provided in 5.15. Meanwhile, if decoding more is required, |
| QCborStreamReader can be used (note that each level of map and array |
| allocates memory). |
| |
| - QDate: |
| * QDate::toString(Qt::DateFormat, QCalendar) no longer takes calendar |
| into account for Qt::TextDate. There was no matching support in |
| QDateTime and the locale-independent formats are intended to be |
| standard, rather than customized to the user. |
| |
| - QDateTime: |
| * Added some missing QCalendar variants of QDateTime::toString(). |
| Included docs for QCalendar variants in both QDate and QDateTime. |
| |
| - QFile: |
| * Introduce QFile::moveToTrash to allow applications to move files to |
| the trash. |
| |
| - QFileInfo: |
| * [QTBUG-75869] Add QFileInfo::isJunction so that applications can |
| recognize NTFS file system entries as junctions |
| |
| - QHash: |
| * Reverse iteration over QHash is now deprecated. |
| * insertMulti(), unite() and values(const Key &key) are now deprecated. |
| Please use QMultiHash instead. |
| |
| - QJsonObject: |
| * Fixed a regression from 5.13 that incorrect results when assigning |
| elements from an object to itself. |
| |
| - QLatin1String: |
| * Added compare(). |
| |
| - QLibrary and QPluginLoader: |
| * [QTBUG-39642] Fixed a deadlock that would happen if the plugin or |
| library being loaded has load-time initialization code (C++ global |
| variables) that recursed back into the same QLibrary or QPluginLoader |
| object. |
| |
| - QLocale: |
| * Deprecated toTime() variants taking a calendar. The calendar is |
| ignored in time parsing. |
| * Data used for currency formats in several locales and list patterns in |
| some locales have changed due to now parsing the CLDR data more |
| faithfully. |
| * [QTBUG-79902] Currency formats are now based on CLDR's accounting |
| formats, where they were previously mostly based (more or less by |
| accident) on standard formats. In particular, this now means negative |
| currency formats are specified, where available, where they (mostly) |
| were not previously. |
| |
| - QMap: |
| * [QTBUG-35544] insertMulti(), unite(), values(Key), uniqueKeys(), |
| count(Key) is now deprecated. Please use QMultiMap instead. |
| |
| - QObject: |
| * [QTBUG-76375] A logging category |
| qt.core.qmetaobject.connectslotsbyname was added, which will report |
| on the connections made by QMetaObject::connectSlotsByName(). |
| |
| - QProcess: |
| * Overloads of start/execute/startDatached that parse a single command |
| string into program and arguments have been marked as deprecated. A |
| static helper splitCommand has been added to construct a QStringList |
| from a command string. |
| |
| - QRandomGenerator: |
| * The system() random generator will now use the RDSEED instruction on |
| x86 processors whenever available as the first source of random data. |
| It will fall back to RDRAND and then to the system functions, in that |
| order. |
| |
| - QRegularExpression: |
| * The escape(), wildcardToRegularExpression() and anchoredPattern() |
| functions now have overloads taking a QStringView parameter. |
| |
| - QResource: |
| * Added uncompressedSize() and uncompressedData(), which will perform |
| any required decompression on the data, prior to returning (unlike |
| data() and size()). |
| |
| - QSet: |
| * Reverse iteration over QSet is now deprecated. |
| |
| - QStandardPaths: |
| * When used in a low-integrity process on Windows, |
| QStandardPaths::writableLocation returns respective low-integrity |
| paths. |
| |
| - QString: |
| * Added QString::isValidUtf16. |
| |
| - QStringView: |
| * Added QStringView::isValidUtf16. |
| * Added compare() overloads taking QLatin1String, QChar. |
| * Conversion from std::basic_string can now be constexpr (when |
| std::basic_string is). |
| |
| - QTimeZone: |
| * The constructor can now handle general UTC-offset zone names. The |
| reported id() of such a zone shall be in canonical form, so might not |
| match the ID passed to the constructor. |
| |
| - QXmlStream: |
| * QXmlStreamReader does now by default limit the expansion of entities |
| to 4096 characters. Documents where a single entity expands to more |
| characters than the limit are not considered well formed. The limit is |
| there to avoid DoS attacks through recursively expanding entities when |
| loading untrusted content. The limit can be changed through the |
| QXmlStreamReader::setEntityExpansionLimit() method. |
| |
| - moc: |
| * Moc now correctly sets a non-null QMetaObject::superClass for |
| Q_GADGETs that inherit from a template which inherits another |
| Q_GADGET. |
| * [QTBUG-74521][QTBUG-76598] moc can now output a ".d" dep file that can |
| be consumed by other build systems. |
| |
| **************************************************************************** |
| * QtGui * |
| **************************************************************************** |
| |
| - Extended QVulkanWindow to allow user to specify additional queues to be |
| created. |
| - Added API for starting interactive window resize and move operations |
| handled by the system. |
| |
| - QClipboard: |
| * Support lazily-provided copying of data to the clipboard on macOS |
| |
| - QCursor: |
| * [QTBUG-48701] QCursor::bitmap() and QCursor::mask() can now return |
| by-value instead of by-pointer. |
| |
| - QFont: |
| * Deprecated QFont::ForceIntegerMetrics and QFont::OpenGLCompatible, |
| with the intention of removing them in Qt 6.0.0. |
| |
| - QMarkdownWriter: |
| * [QTBUG-80603] Code blocks are no longer word-wrapped; the beginning |
| fence of a code block no longer has a space before the language string; |
| and the ending fence is no longer skipped in some cases where it was. |
| |
| - QPdfWriter: |
| * New API to provide external document XMP metadata and attach files to |
| PDF. |
| |
| - QTabletEvent: |
| * QTabletEvent::device() is deprecated, because the plan is to return |
| an object pointer in Qt 6 rather than an enum. The enum is now provided |
| by deviceType(). |
| * hiResGlobalX() and hiResGlobalY() are deprecated, because globalPosF() |
| has the same resolution. But globalPosF() (and several others) will |
| probably be renamed in Qt 6. The replacements are not in place yet. |
| * [QTBUG-77826] Local coordinates are now correct when the event is |
| delivered to a nested window on X11. |
| |
| - Text: |
| * Fixed a problem where pixel sizes would be truncated before calculating |
| glyph positions. |
| * Fixed an issue with QFont::PreferNoShaping where boxes would appear in |
| place of unprintable characters. |
| * Fixed a problem where certain bold fonts would be synthetically |
| emboldened by Qt when using the Freetype font engine. |
| |
| - Application palettes are now resolved against the platform's theme |
| palette, the same way widget palettes are resolved against their parents, |
| and the application palette. This means the application palette reflected |
| through QGuiApplication::palette() may not be exactly the same palette as |
| set via QGuiApplication::setPalette(). |
| |
| **************************************************************************** |
| * QtWidgets * |
| **************************************************************************** |
| |
| - Added QStyleOptionTabV4 as a subclass of QStyleOptionTab so that the |
| tab's index information can be obtained. |
| |
| - ItemViews: |
| * [QTBUG-76423] The convenience views QList/Table/TreeWidgetItem now |
| treat a default constructed QBrush or QSize as an empty QVariant which |
| allows resetting of the values set to it's default values. |
| |
| - QApplication: |
| * The globalStrut property has been deprecated and will be removed from |
| Qt 6. |
| |
| - QButtonGroup: |
| * Added signals idClicked/Pressed/Released/Toggled that replace the |
| deprecated signal overloads. |
| |
| - QComboBox: |
| * QComboBox got a new property 'placeholderText' |
| * Support checkable items in styles that use a popup for the dropdown. |
| * the SizeAdjustPolicy value AdjustToMinimumContentLength is deprecated, |
| use AdjustToContents or AdjustToContentsOnFirstShow instead. |
| |
| - QGraphicsView: |
| * Fixed a bug where hover events would not be delivered if the item was |
| added while blocked by a modal panel. |
| |
| - QLabel: |
| * [QTBUG-48701] QLabel::pixmap() and QLabel::picture() can now return |
| by-value instead of by-pointer. |
| |
| - QLineEdit: |
| * Inputmask X character now requires non-blank input. |
| |
| - QMenu: |
| * a popup menu hides when a QWidgetAction added to it fires the |
| triggered signal. |
| |
| - QShortcut: |
| * QShortcut ctor has now pointer to member function overloads |
| |
| - QStyle: |
| * You can now set the CSS property 'icon' on a QPushButton to override |
| which icon to draw. |
| |
| - QSystemTrayIcon: |
| * On macOS, clicking on the message will remove the notification. |
| |
| - QTabWidget/QTabBar: |
| * Tabs can now be hidden with setTabVisible |
| |
| - QWidget: |
| * Fonts and palette settings are inherited by children from their |
| parents even if the children have application-wide platform theme |
| overrides. |
| |
| - QWizard: |
| * visitedPages has been deprecated, use visitedIds instead. |
| |
| **************************************************************************** |
| * QtNetwork * |
| **************************************************************************** |
| |
| - A new signal introduced to report when a valid session ticket is received |
| (TLS 1.3) |
| |
| - SSL: |
| * Removed OpenSSL 1.0.x support, now 1.1.x is required |
| * The minimum required version of OpenSSL is now 1.1.1. |
| |
| - QSslCertificate: |
| * [QTBUG-72587] Add overload of fromPath that does not make use of |
| QRegExp and deprecate the QRegExp variant. |
| |
| **************************************************************************** |
| * QtSql * |
| **************************************************************************** |
| |
| - QMYSQL: |
| * Removed support for MySql < 5.0 since 5.0 was released 14 years ago. |
| * The QMYSQL plugin can now be build with the MariaDB C connector libs |
| on Windows. |
| |
| - QSqlDriver: |
| * The one-arg version of QSqlDriver::notifcation() is now deprecated. |
| |
| **************************************************************************** |
| * QTestLib * |
| **************************************************************************** |
| |
| - The formerly named 'xunitxml' test reporter has been renamed to what it |
| actually is: a JUnit test reporter, and is now triggered by passing -o |
| junitxml to the test binary. |
| |
| **************************************************************************** |
| * QtXml * |
| **************************************************************************** |
| |
| - [QTBUG-76177] SAX classes are now deprecated. Use QXmlStreamReader, |
| QXmlStreamWriter in QtCore instead. |
| |
| **************************************************************************** |
| * Configure * |
| **************************************************************************** |
| |
| - Add switch "-coverage source-based" to enable clang's "source-based" code |
| coverage feature. This can be used for code coverage analysis. |
| |
| - X11: |
| * [QTBUG-67277][QTBUG-30939] The minimal required version of libxcb now |
| is 1.11. |
| * [QTBUG-67277][QTBUG-30939] Removed -qt-xcb, -system-xcb, -xkb, |
| -xcb-xinput switches. |
| |
| **************************************************************************** |
| * cmake * |
| **************************************************************************** |
| |
| - Fixed an issue where some Qt location and declarative plugins whose name |
| did not end with "Plugin" where not imported by the corresponding Qt |
| component package. |
| |
| **************************************************************************** |
| * Third-Party Code * |
| **************************************************************************** |
| |
| - libjpeg-turbo was updated to version 2.0.4 |
| |
| - X11: |
| * [QTBUG-67277][QTBUG-30939] Removed all bundled XCB libs, with the |
| exception of xcb-xinput, which is not available on systems with libxcb |
| 1.11. |
| |
| **************************************************************************** |
| * Platform Specific Changes * |
| **************************************************************************** |
| |
| - Linux: |
| * Enable accessibility on Linux when Orca is started by hand |
| * [QTBUG-78754] Vulkan is now supported by eglfs (eglfs_viv backend) on |
| i.MX8 devices with the Vivante graphics stack. This is done via |
| VK_KHR_display so no windowing system is required. |
| |
| - X11: |
| * [QTBUG-67277][QTBUG-30939] XKB and XInput2 now are mandatory |
| dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11 |
| releases. XCB-XInput is not part of libxcb 1.11 releases, but Qt |
| builders can use the -bundled-xcb-xinput switch. |
| |
| - Android: |
| * [REVERTED] Qt::MaximizeUsingFullscreenGeometryHint window flag is |
| now supported, and will make the window fullscreen, but keep the |
| system UI on-screen, with a translucent background color. |
| * [QTBUG-82120] Use native file dialog by default for open and save |
| operations. |
| |
| - Windows: |
| * Fixed a bug where some fonts would not be accessible by |
| referencing their typographic name. |
| * Fixed a 2 pixel offset on glyphs when using color fonts or any |
| hinting preference other than the default (full) hinting. |
| |
| - WebAssembly: |
| * Updated emscripten to version 1.39.8 |