blob: 15b12b60ab3558e0e053b81d297752701f4ed239 [file] [log] [blame]
Qt 5.12 introduces many new features and improvements as well as bugfixes
over the 5.11.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.12 series is binary compatible with the 5.11.x series.
Applications compiled for 5.11 will continue to run with 5.12.
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 *
****************************************************************************
- QtCore:
* [QTBUG-34460] qFatal() no longer uses std::abort() on Windows, as
there are circumstances where global destructors are still run after
that call, leading to possible deadlocks.
- QRegularExpression:
* [QTBUG-66781] Regular expressions are now automatically optimized
(including JIT compiling) on their first usage. The pattern options
OptimizeOnFirstUsageOption and DontAutomaticallyOptimizeOption no
longer have any effect, and will get removed in a future version of
Qt. QRegularExpression::optimize() can be still used to compile and
optimize the regular expression in advance (before any match), if
needed.
- QDataStream:
* [QTBUG-59978][QTBUG-67995] version bumped up to 18 to account for
changes in the serialization of QGradient.
- Dialogs:
* QFileSystemModel now uses QRegularExpression internally for wildcard
matching. Note that QRegularExpression might not give the exact same
result as QRegExp as its implementation follows strictly the glob
patterns definition for wildcard expressions.
****************************************************************************
* Third-Party Code *
****************************************************************************
- Sources of xcb-xinput 1.13 were bundled and are available via -qt-xcb.
- The minimal required version of libxcb is now 1.9. Bundled xcb sources
were updated to libxcb 1.9.1 built with xcb-proto 1.8.
- [QTBUG-67654] Updated CLDR to version 33.1
- [QTBUG-71144] Updated CLDR to version 34
- [QTBUG-66561][QTBUG-70008] double-conversion got updated to upstream
version 3.1.1.
- libjpeg-turbo was updated to version 2.0.0
- libpng was updated to version 1.6.35
- Sqlite was updated to version 3.25.2
- [QTBUG-71109] updated bundled libxkbcommon 0.4.1 -> 0.8.2 (up to
31f1f355700870c6615399fbfa7934934b3a9a57)
- PCRE2 was updated to version 10.32.
- Added documentation for the SLJIT part of pcre2, which is available
under the BSD-2-Clause license.
****************************************************************************
* Tools *
****************************************************************************
- rcc:
* Added a --list-mapping option which shows a mapping of resource paths
to file system paths.
- qmake
* New CONFIG options lrelease and embed_translations were added.
CONFIG+=lrelease does run lrelease on translation files listed in
TRANSLATIONS and EXTRA_TRANSLATIONS. CONFIG+=embed_translations does
include the generated .qm files as resources under :/i18n/.
- uic
* [QTBUG-65251][QTBUG-51602] The -no-stringliteral option is now
deprecated and UIC will not generate QStringLiteral anymore.
****************************************************************************
* QtCore *
****************************************************************************
- Added support for CBOR:
* Added QCborStreamReader and QCborStreamWriter, classes for low-level
reading and writing of CBOR streams.
* Added QCborValue, QCborArray and QCborMap, classes that permit DOM-like
access to CBOR data. The API is similar to QJsonValue, QJsonArray and
QJsonObject, respectively.
- QByteArray:
* Added QByteArray::isUpper() and QByteArray::isLower() to check if a
byte array contains only uppercase or only lowercase Latin1 letters.
* Added compare(), which takes Qt::CaseSensitivity as one of the
parameters. This function is more efficient than using toLower() or
toUpper() and then comparing.
* [QTBUG-66187] QByteArray::toInt(), QByteArray::toDouble() and the
other number conversion functions now ignore leading and trailing
whitespaces, as their QString counterparts already did. For
consistency reasons, the same behavior was added to
qEnvironmentVariableIntValue() also.
- QCommandLineParser:
* [QTBUG-70174] Fixed a bug that caused the help output to show two
options or more in the same line if the options didn't have a
description.
- QCryptographicHash:
* Add a static method, hashLength, which returns the length of the
output of a hash function in bytes.
- QDir:
* QDir now uses QRegularExpression internally for wildcard matching.
Note that QRegularExpression might not give the exact same result as
QRegExp as its implementation follows strictly the glob patterns
definition for wildcard expressions. Nevertheless, the tests for QDir
return the same results as before.
* QDir::tempPath() now reports the canonical path of the temporary
directory, with any symlinks resolved.
* On Windows, QDir::drives() no longer returns drives whose media were
ejected.
- QExplicitlySharedDataPointer:
* [QTBUG-66635][QTBUG-66946] Added operator== for nullptr.
- QFile:
* [QTBUG-13470] When opening a file, if Truncate is asked for, or
implied by other flags, it shall be attempted, regardless of what
other options are selected. We previously did this on Windows; now we
do so also on Unix (even when appending).
- QFileSystemWatcher:
* [QTBUG-69320] Fixed a bug that caused addPaths() to crash on Windows
if adding a path to be watched on removable storage, if that
addPaths() was called on a thread not created by QThread and no
QEventLoop has been created yet.
- QFlags's operator| for enum types in the Qt namespace are now declared
in the Qt namespace itself.
- QLocale:
* [QTBUG-57802] Added support for World and Europe as (numeric)
"country" codes ("territory" in CLDR terms), thereby enabling support
for Yiddish and Esperanto, among other locales using such codes.
- Logging:
* [QTBUG-69548] Qt will now accept qtlogging.ini files written by
QSettings.
- QMetaType can now register constructor for a set of dynamic types.
- QRegularExpression:
* Implemented support for wildcard patterns through a static method.
* QRegularExpression now provides anchoredPattern() which is a helper
function to build regular expressions used for exact matching.
* Implemented support for wildcard patterns. Warning: QRegularExpression
might not give the exact same result as QRegExp as its implementation
follows strictly the glob patterns definition for the wildcard
expressions.
- [QTBUG-62894] Introduced QScopeGuard.
- QSharedDataPointer:
* [QTBUG-66635][QTBUG-66946] Added operator== for nullptr.
- QSortFilterProxyModel:
* [QTBUG-46810] QSortFilterProxyModel now supports QRegularExpression.
* Setters of both the filterRegExp and filterRegularExpression
properties are now slots and can be used with the old as well as the
new syntax.
- QString:
* Added the functions QString::isUpper() and QString::isLower() to check
if a string contains only uppercase or only lowercase letters.
- QTextCodec:
* [QTBUG-56203] QTextCodec automatically deregisters on destruction now.
- QTimer:
* [QTBUG-69800] Fixed singleShot() methods that lacked proper "const"
qualification to QObject context receivers.
* Added QTimer::connectTo(), a shorthand way of connecting to the
timeout() signal.
- QTranslator:
* [QTBUG-31031] It is now possible to load qm files without any
translations. This is particularly useful for the language the
untranslated strings are written in; logic to load translations can
now handle the source language like all other languages.
- QUndoStack:
* [QTBUG-40040] Exposed canUndo, canRedo, undoText, redoText and clean as
Q_PROPERTYs.
- QUrl:
* Fixed a bug that caused QUrl::matches to incorrectly compare two URLs
with different hostnames or different usernames as equal, if certain
QUrl::RemoveXxx options were passed.
- other:
* Added an overload of q{To,From}{Big,Little}Endian that operates on a
memory region.
* Added the QT_TR_N_NOOP(), QT_TRANSLATE_N_NOOP(), and
QT_TRANSLATE_N_NOOP3() macros for numeral dependent delayed
translation.
****************************************************************************
* QtGui *
****************************************************************************
- QBitmap:
* Added overloaded QBitmap::fromImage that takes QImage rvalue.
- QDocumentWriter:
* [QTBUG-63581] QDocumentWriter now supports table borders, table
alignment, table width, column widths, line height and image
resolution when exporting QTextDocuments to ODF files.
- QGradient:
* [QTBUG-59978][QTBUG-67995] Added ObjectMode coordinate mode.
- QGuiApplication:
* [QTBUG-26413] Fixed queryKeyboardModifiers() on macOS to actually return
the current modifier key state.
- QImage:
* [QTBUG-45858] QImage now supports 64bit image formats with 16 bits per
color channel, compatible with 16bpc PNG or RGBA16 OpenGL formats.
- QIntValidator:
* [QTBUG-59650] Input value with over the highest acceptable value, but
with no more digits than the maximum value, is now considered
intermediate.
- QOpenGLShader:
* [QTBUG-66074] QOpenGLShader has been fixed to expose geometry and
tessellation evaluation/control shaders with OpenGL ES 3.2.
- QPagedPaintDevice:
* The default constructor has been deprecated since that class is
not meant to be used standalone. The two public but internal
devicePageLayout() methods are now deprecated.
- QPainter:
* [QTBUG-67248] Fixed drawTiledPixmap() and texture-brush painting with
high-DPR images.
* QPainter::drawTiledPixmap() now tiles in the device independent
coordinate system.
- QPicture:
* [QTBUG-71208] Fixed a crash reading malformed picture file.
- QStandardItemModel:
* itemData does not return role 255 any more.
- QTextImageFormat:
* Added two new functions to the class: setQuality(int=100) and
quality(). They are currently used by QTextODFWriter to determine the
image type and quality when exporting images to ODT files.
- Text:
* [QTBUG-57479] Non-breaking spaces are now displayed as a degree symbol
when QTextOption::ShowTabsAndSpaces is used.
* [QTBUG-69085] Fixed position of text cursor set by clicking outside
the bounds of a text line that ends with a surrogate pair or ligature.
* [QTBUG-70293] Fixed a crash that can happen when calling a setter on a
QTextCursor after its QTextDocument has been deleted.
****************************************************************************
* QtNetwork *
****************************************************************************
- Added DTLS over UDP support.
- QPasswordDigestor:
* [QTBUG-30550] Added QPasswordDigestor
- QSslKey:
* [QTBUG-17718] The OpenSSL backend can now load encrypted PKCS#8
DER-encoded keys.
* [QTBUG-59068] Added support for PKCS#8-encoded keys in the generic SSL
back-end (used for SecureTransport on macOS and for WinRT). Note that
it does not support keys encrypted with a PKCS#12 algorithm.
- QSslSocket:
* Enabled ALPN (and thus HTTP/2 negotiation) in SecureTransport backend
(macOS).
* [QTBUG-69420] Implemented renegotiation for SecureTransport backend.
- SSL:
* The OpenSSL 1.1 backend also works with OpenSSL 1.1.1 (and thus can
negotiate TLS 1.3).
* [QTBUG-68156] OpenSSL >= 1.0 is now required to build Qt with OpenSSL
support.
****************************************************************************
* QtSql *
****************************************************************************
- MySQL:
* Now supports MySQL versions >= 8.0.1.
* [QTBUG-57028] The TIME data type is now treated like a string-based
type in order to respect the full range of the TIME data type.
****************************************************************************
* QtTest *
****************************************************************************
- QCOMPARE:
* Now outputs contents of std::tuple on failure.
* [QTBUG-65845] QtTest now prints values of QFlags that failed to compare.
****************************************************************************
* QtWidgets *
****************************************************************************
- Itemviews:
* [QTBUG-12129][QTBUG-14949][QTBUG-57891] Fixed eliding of multi-line
items.
- QAbstractSpinBox:
* [QTBUG-67380] The Qt::ControlModifier now increases the number of steps a
QAbstractSpinBox takes for the following interactions: scrolling, up/down
keyboard keys and the spin box buttons. Previously, Qt::ControlModifier
only affected scrolling.
- QApplication:
* [QTBUG-67736] QApplication no longer sends a mouse move event to the
entered widget if it sends synthetic enter and leave events.
- QHeaderView:
* [QTBUG-23203] Padding/margin is now taken into account when the text gets
elided.
* [QTBUG-59501] The qss padding attribute is now honored in all cases.
* [QTBUG-62091] The size of the decoration is now taken into account in
paintSection().
* [QTBUG-65017] The drag'n'drop indicator is now using the correct font.
* [QTBUG-69431] setDefaultSectionSize() now checks if the given value is
inside min/max section size.
* [QTBUG-70084] The section indicator is now high-DPI-aware.
- QItemDelegate:
* [QTBUG-16134] Fixed text height calculation when the item has a
decoration or checkbox.
- QLineEdit:
* [QTBUG-44046] The textEdited() signal is now emitted even if the
QValidator has changed the user input.
* [QTBUG-57448] Added inputRejected() signal for when a key press is not
accepted by the QLineEdit. For instance, when an invalid key is
pressed for a validator set.
- QListView:
* [QTBUG-27110] The pseudo states :first/:middle/:last are now respected.
* [QTBUG-56606] Added itemAlignment property.
* [QTBUG-67440] Fixed a bug that caused items on internal move to be
deleted.
- QMenu:
* [QTBUG-69199] Removed icon highlight when a stylesheet was applied by
the application.
- QMessageBox:
* [QTBUG-35545] On Android and iOS it's now possible to show a
QMessageBox with custom buttons as a native dialog.
- QSpinBox/QDoubleSpinBox:
* Added an option for adaptive decimal step size.
- QSplashScreen:
* [QTBUG-43081] The alignment when the message is passed as HTML is now
correctly honored.
- QStyle:
* QStyle::SH_SpinBox_StepModifier allows the developer to pick which
keyboard modifier increases the number of steps a QAbstractSpinBox
takes for the following interactions: scrolling, up/down keyboard keys
and the spin box buttons. The Qt::ShiftModifier can now be used, or
the feature can be disabled using Qt::NoModifier. Previously, only
Qt::ControlModifier could be used as the modifier.
- QTabBar:
* [QTBUG-18146] Fixed mixed up CSS pseudo class for left and right.
- QTableView:
* [QTBUG-48244][QTBUG-49548] Fixed calculating geometries for editors.
* [QTBUG-70215] Fixed PageUp not getting to top when first row is hidden.
- QTableWidget:
* Fixed handling of Qt::EditRole and Qt::DisplayRole in setItemData().
- QTreeView:
* [QTBUG-39486] Sped up expanding items when pressing asterisk.
- QWidget:
* [QTBUG-68393][QTBUG-69619][QTBUG-10907] Fixed several bugs that
incorrectly reordered tabs for compound widgets under some special
circumstances.
* [QTBUG-65199] enterEvent() and leaveEvent() now occur when a hovering
drawing tablet stylus enters or leaves a widget.
* Added the Qt::WA_StyleSheetTarget attribute to indicate that a widget
was affected by a style sheet.
****************************************************************************
* Android *
****************************************************************************
- Added Android edit context menu.
- Removed old debugging bridge. To be able to debug Qt on Android apps the
user must use QtCreator 4.6.1+.
- [QTBUG-63735] The system no longer restarts the application when the user
replaces SIM card or changes the logical density of the screen.
- [QTBUG-70280] ARM64 builds now default to android-21 instead of failing.
- [QTBUG-35545] QMessageBox now supports buttons with custom labels.
****************************************************************************
* Linux *
****************************************************************************
- QFileDialog will use the native dialogs provided by the platform theme
instead of trying to use Flatpak portal to select directories.
****************************************************************************
* macOS *
****************************************************************************
- QtGui:
* [QTBUG-63800] Fixed display of condensed fonts when NoFontMerging is
in use.
- Text:
* [QTBUG-69955] Fixed font weights on macOS 10.14.
****************************************************************************
* Windows *
****************************************************************************
- [QTBUG-55762] The dimensions of invisible margins inside the frames of
Windows 10 windows will now be disregarded in the positioning of Qt
windows to avoid a misplaced look (offset by a few pixels from the
expected position).
- [QTBUG-44964][QTBUG-60437] The application attributes
AA_CompressTabletEvents and AA_CompressHighFrequencyEvents are now
supported on Windows 8 and above for touch/pen input, with the same
defaults as on X11 (compress touch events, don't compress tablet events)
- QTimeZone:
* [QTBUG-42021] Changed MS-Win to use ICU for time-zone data, when
available, in preference to MS's TZ APIs. The choice is made when
building Qt. This will give reliable results when non-DST transitions
arise, or when a zone's DST is not simple (e.g. interrupted by
Ramadan).
****************************************************************************
* winrt *
****************************************************************************
- Added support to Windows UI Automation to the WinRT QPA, allowing
Qt-based UWP applications to operate with accessibility and
programmatic UI control tools.
****************************************************************************
* X11 *
****************************************************************************
- [QTBUG-39624] The xcb plugin was ported to use libxcb-xinput instead of
libXi for XInput2 support. The -xinput2 configure option was replaced by
-xcb-xinput.