| Qt 5.4 introduces many new features and improvements as well as bugfixes |
| over the 5.3.x series. For more details, refer to the online documentation |
| included in this distribution. The documentation is also available online: |
| |
| http://qt-project.org/doc/qt-5.4 |
| |
| The Qt version 5.4 series is binary compatible with the 5.3.x series. |
| Applications compiled for 5.3 will continue to run with 5.4. |
| |
| Some of the changes listed in this file include issue tracking numbers |
| corresponding to tasks in the Qt Bug Tracker: |
| |
| http://bugreports.qt-project.org/ |
| |
| Each of these identifiers can be entered in the bug tracker to obtain more |
| information about a particular change. |
| |
| **************************************************************************** |
| * Deprecation Notice * |
| **************************************************************************** |
| |
| - The Q_COMPILER_xxx macros for C++14 compiler features introduced in Qt |
| 5.3 are deprecated and will not be updated for new compilers either. |
| User code should be changed to use the macros from Standing Document 6 |
| instead: |
| http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations. |
| This does not affect C++11 feature macros. |
| |
| **************************************************************************** |
| * Important Behavior Changes * |
| **************************************************************************** |
| |
| - QExplicitelySharedDataPointer's copy constructor which performs a |
| static_cast from "X *" to "T *" (when constructing a |
| QExplicitlySharedDataPointer<T> from a QExplicitlySharedDataPointer<X>) |
| doesn't perform a static_cast from "X *" to "T *" any more. Instead, an |
| implicit cast is now performed. This change will break compilation of code |
| that relied on the downcast (i.e. cast towards a more derived type) of the |
| templated type when copy constructing a QExplicitelySharedDataPointer |
| object. Please refer to the class documentation for more information about |
| this issue and a workaround to keep old code compiling. |
| - QImageReader now automatically rotates JPEG images according to Exif |
| orientation |
| - [QTBUG-18980] HarfBuzz-NG is now the default shaper on all platforms. |
| This results in a better shaping results for various languages, better |
| performance, and lower memory consumption. |
| - [QTBUG-41858] Changed QStringRef::right() to be consistent with |
| QString::right(). The function now returns the N right-most characters, |
| like the documentation already claimed. |
| - The mutable Java-style iterators like QListMutableIterator and |
| QHashMutableIterator no longer set the parent container to unsharable |
| mode. If you create a copy of the container being iterated on after the |
| iterator, any changes done with the iterator might affect the copy too. |
| |
| - Logging (including qDebug and qWarning): |
| * Support for the deprecated environment variables QT_NO_JOURNALD_LOG |
| and QT_ANDROID_PLAIN_LOG has been removed. Instead, set |
| QT_LOGGING_TO_CONSOLE to 1 to force logging to the console (stderr). |
| Set that variable to 0 to force logging to the system-specific event |
| log (if any). |
| * [QTCREATORBUG-12564] Log output will now go to the system log (if |
| support for it was compiled into Qt) if the application has no |
| controlling terminal or console window. Set QT_LOGGING_TO_CONSOLE to 1 |
| to force logging to go to stderr. |
| |
| - QSettings: |
| * [QTBUG-41812] QSettings::value() now returns an invalid QVariant when |
| passing an empty key. The code path ran into an assert, which was only |
| noticeable in debug builds. |
| * [QTBUG-21739] The locking mechanism inside QSettings has changed |
| and is no longer compatible with the one of previous versions of |
| Qt. There might be corruption if two applications running different |
| versions of Qt are writing to the same config file at the same |
| time. You must also now have write permissions in the directory |
| containing the settings file in order to write settings. |
| |
| **************************************************************************** |
| * Library * |
| **************************************************************************** |
| |
| QtConcurrent |
| ------------ |
| |
| - [QTBUG-17220] run() now optionally takes as its first argument the |
| QThreadPool to run the task on. |
| |
| QtCore |
| ------ |
| |
| - Added QEnableSharedFromThis, a class that allows obtaining a |
| QSharedPointer for an object already managed by a shared pointer. |
| - Added qHashBits() to aid implementing qHash() overloads for custom |
| types. |
| - Added new QByteArrayList class. |
| - Added QStorageInfo class to retrive information about mounted volumes |
| and drives |
| |
| - Logging: |
| * QT_MESSAGE_PATTERN can include a backtrace using %{backtrace} |
| * QT_MESSAGE_PATTERN can include a timestamp using %{time}. By |
| default, this shows the time in ISO format (YYYY-MM-DDTHH:mm:ss), |
| but a different format string can be specified in the tag (e.g., |
| %{time YYYYMMDDHHmmsszzz}). If the format is "process", Qt will |
| display the elapsed time since the process started. |
| * Added QtMsgType argument to QLoggingCategory constructor and |
| Q_LOGGING_CATEGORY macro that controls the default category |
| configuration. |
| * File, line, function information are not recorded anymore for logging |
| statements in release builds. Set QT_MESSAGELOGCONTEXT explicitly to |
| enable recording in all configurations. |
| |
| - QAbstractProxyModel: |
| * [QTBUG-39549] QAbstractProxyModel now forwards the drop-related API. |
| |
| - QByteArray: |
| * Added convenience methods to convert directly to and from std::string. |
| * Fixed a bug that would cause QByteArray to stop converting toUpper or |
| toLower at the first embedded null character. |
| |
| - QCommandLineParser: |
| * Added addOptions() method. |
| |
| - QElapsedTimer: |
| * Is no longer a POD; its default constructor now initializes the object to |
| an invalid QElapsedTimer |
| |
| - QFlags: |
| * [QTBUG-39786] Added initializer_list constructor |
| |
| - QFuture: |
| * [QTBUG-17220] Can now be used with any QThreadPool, not just |
| globalInstance(). |
| |
| - QPair: |
| * Can now be used in C++11 constexpr contexts. |
| |
| - QSaveFile: |
| * Now follows symbolic links when writing to a link instead of |
| replacing the link with the contents. |
| |
| - QSettings: |
| * [QTBUG-21739] Fixed data loss while writing the config to the disk |
| fails. |
| |
| - QStandardPaths: |
| * [QTBUG-38483] QStandardPaths now has new enumeration values |
| AppDataLocation, AppLocalDataLocation to be able to differentiate |
| between roaming and local paths on the Windows operating system. |
| DataLocation is deprecated in favor of AppDataLocation. |
| |
| - QString: |
| * QString can now split a string to a list of QStringRef. |
| * Added the QStringRef::split() function |
| |
| - QTextStream: |
| * QTextStream now uses group separators when writing floating-point |
| numbers when the locale is not the C locale. The old behavior can be |
| restored by setting QLocale::OmitGroupSeparator on the locale. |
| |
| - QTimer: |
| * [QTBUG-26406] Implemented new style connect syntax, including |
| functors, in QTimer::singleShot |
| |
| - QUrl: |
| * QUrl::fromLocalFile now returns an empty URL if the input string is |
| empty. |
| |
| - QVariant: |
| * [QTBUG-40363] Fixed ordered comparison between QVariants that do not |
| match but produce identical toString output. |
| |
| - QVector: |
| * Added removeOne() and removeAll() for QList compatibility. |
| |
| - QWeakPointer: |
| * Added lock() method for std::weak_ptr compatibility. |
| * Added member-swap function. |
| |
| - QtJson: |
| * [QTBUG-26606] QJsonArray and QJsonObject now supports C++11 |
| initializer lists. |
| |
| - QtMath: |
| * Introduced qNextPowerOfTwo methods. |
| |
| QtDBus |
| ------ |
| |
| - Blocking calls that take a long time will now generate a warning. The |
| time taken may be tuned using the environment variables |
| Q_DBUS_BLOCKING_CALL_MAIN_THREAD_WARNING_MS and |
| Q_DBUS_BLOCKING_CALL_OTHER_THREAD_WARNING_MS. The value represents (in |
| milliseconds) how long before a blocking call is warned about. A value |
| below zero disables the warning, a value of zero will warn about all |
| blocking calls. |
| |
| QtGui |
| ----- |
| |
| - Added QPixelFormat class. |
| - Added QOpenGLWidget class. |
| - Added QOpenGLWindow class. |
| - Added QRasterWindow class. |
| - QOpenGLContext is now able to adopt existing native contexts. |
| - [QTBUG-38168] QtGui's OpenGL headers are now automatically including the |
| highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds. |
| - [QTBUG-36483] Dynamic OpenGL implementation loading is now supported on |
| Windows. This requires Qt to be configured with -opengl dynamic. |
| - [QTBUG-39583] Keymaps are now changeable at runtime when using eglfs. |
| - [QTBUG-40841] environment variable QT_DBL_CLICK_DIST customizes the |
| amount of movement allowed when detecting a double click. |
| - [QTBUG-37552] The eglfs mouse cursor properly resets the array buffer |
| from now on to avoid rendering issues. |
| - [QTBUG-40093] QWindow::close() is changed to send a QCloseEvent which |
| must be accepted before destroy() will be called. |
| |
| - Clipboard: |
| * [QTBUG-41852] Fixed a memory leak in setMimeData() when the platform |
| plugin did not support the requested mode. |
| |
| - Painting: |
| *[QTBUG-41413] Fixed some very rare cases of mismatched raster modes |
| in QPainter. |
| |
| - QEvent: |
| * [QTBUG-38858] The debug output for events has been significantly |
| improved. |
| |
| - QFont: |
| * [QTBUG-22814][QTBUG-22946] QFont now serializes its data properly, |
| without any data loss. |
| |
| - QGuiApplication: |
| * Add support for -icon command line argument on X11, add -qwindowicon |
| on all platforms. |
| * Added QGuiApplication::screenRemoved signal to inform that a screen |
| has been removed, before Qt reacts to it. |
| |
| - QImage: |
| * [QTBUG-25998] Added support for 10-bit per color channel image |
| formats. |
| |
| - QImageReader now automatically rotates JPEG images according to Exif orientation |
| |
| - QOpenGLBuffer: |
| * [QTBUG-38168] Added QOpenGLBuffer::mapBufferRange(). |
| |
| - QOpenGLFramebufferObject: |
| * Introduced an argument to QOpenGLFramebufferObject::toImage() to save |
| mirroring the result. |
| * Added support 10-bit per color channels formats as the internal |
| framebuffer format, making it possible to render in that precision. |
| |
| - QOpenGLTextureCache: |
| * Added support for uploading common QImage formats directly to OpenGL, |
| if supported by the OpenGL implementation. |
| |
| - QPicture: |
| * [QTBUG-20578] QPicture now serializes its data properly by also |
| accounting for QDataStream versions greater than Qt 4.5. |
| |
| - Tablet support: |
| * [QTBUG-39458] Added buttons to QTabletEvent. |
| * [QTBUG-39666] Events correctly identify the tool. |
| * [QTBUG-39570][QTBUG-40469] Corrected valuator ranges across platforms. |
| * Better support for non-Wacom devices. |
| * Better manual test to verify more features. |
| |
| - Text: |
| * [QTBUG-41372] Fixed regression when rendering Uchen text in WebKit |
| on Windows. |
| * Fixed use of uninitialized memory in the FreeType font engine |
| |
| QtNetwork |
| --------- |
| |
| - QNetworkAccessManager: |
| * Fixed behavior of upload QIODevice that generate data on readyRead() |
| for HTTP PUT/POST |
| |
| - QSsl: |
| * QSsl::SecureProtocols now also excludes SSLv3 |
| |
| - QSslCertificate: |
| * Can now be used as a key in QSet/QHash. |
| |
| - QSslError: |
| * Can now be used in QSet/QHash. |
| |
| - QSslSocket: |
| * [QTBUG-28471] Added support for finding the version of SSL/TLS in |
| use by a connection. |
| * Added accessors for the version of OpenSSL used at build-time. This |
| will help when debugging problems caused by a mismatch with the |
| run-time version. |
| * [QTBUG-1565] Support for loading PKCS#12 bundles was added. These are |
| often used to conveniently transport keys and certificates, |
| particularly when making use of client certificates. |
| |
| QtPrintSupport |
| -------------- |
| |
| - QPrinter: |
| * [QTBUG-11332] Added duplex support for Windows and OS X. |
| |
| QtSql |
| ----- |
| |
| - ibase: Fixed memory corruption due to LONG being 4 bytes in firebird. |
| |
| - QSqlDriver: |
| * Add support for determining DBMS type from SQL driver using |
| QSqlDriver::dbmsType() |
| |
| QtTest |
| ------ |
| |
| - Tests now output build information. |
| |
| QtWidgets |
| --------- |
| |
| - All widgets with a setReadOnly method now send a ReadOnlyChange event |
| (e.g., for app-specific palette changes) |
| - [QTBUG-32888] Accessibility for widgets is now included in the widget |
| library instead of being a separate plugin. For static builds this means |
| that libqtaccessiblewidgets is no longer required. |
| - [QTBUG-39814] Accessors for Qt::MouseEventSource and Qt::MouseEventFlags |
| are now available in QGraphicsSceneMouseEvent. |
| |
| - QComboBox: |
| * [QTBUG-33537] Fixed positions of items when QComboBox is set as |
| editable in Fusion style. |
| * [QTBUG-33537] Fixed updating appearance of popup menu when changing |
| the editable state of the combo box. |
| |
| - QDialog / Windows: |
| * [QTBUG-2027] Dialogs can now be menuless. |
| |
| - QGraphicsScene: |
| * Added the minimumRenderSize property which can be used to speed up |
| rendering by not painting items smaller than a give size. |
| * The removal of items when using the linear index is now more |
| efficient. |
| |
| - QLayout: |
| * [QTBUG-37673] Widgets and dialogs containing layouts with |
| heightForWidth (such as a label with word wrap) will no longer get a |
| minimum size of 0x0. |
| |
| - QLineEdit: |
| * [QTBUG-40287] The signal textEdited() is now emitted when the user |
| clicks the clear button created by setClearButtonEnabled() as well. |
| |
| - QMainWindow: |
| * [QTBUG-40410] Dock widgets will now be resized properly when the |
| central widget has a fixed size. |
| |
| - QPlainTextEdit: |
| * [QTBUG-36415] Fixed a crash when using full width selections and |
| issuing a complex undo command chain which removes and inserts an |
| empty block in one go. |
| * [QTBUG-40347] Fixed a possible divide by zero crash when font metrics |
| were missing for the font. |
| |
| - QTabBar: |
| * Added changeCurrentOnDrag property. |
| |
| - QTableView / QTableWidget: |
| * [QTBUG-29239] currentIndex() now reflects the top left cell when in a |
| span. |
| |
| - QTreeView: |
| * Indentation is now style-dependent by default. |
| * Added resetIndentation(). |
| |
| - Styles: |
| * Allow overriding standardIcon() in a proxy style |
| |
| **************************************************************************** |
| * Platform Specific Changes * |
| **************************************************************************** |
| |
| - Several QPA logging categories are added under qt.qpa to enable logging |
| of various platform-specific details. qt.qpa.input is now used |
| consistently. |
| |
| Android |
| ------- |
| |
| - [QTBUG-36019] Enable using native style also when Ministro deployment |
| mechanism is not in use. |
| - [QTBUG-29069] Release all windows when the application is suspended. |
| - Added Gradle support to build the APK. |
| - [QTBUG-39688] Back key no longer kills the application when no window is |
| visible. |
| - [QTBUG-41365] Default open-source license for Qt for Android is now |
| LGPLv3. For compatibility with the LGPLv2.1 license, add |
| "-no-android-style-assets" to your configuration. |
| - [QTBUG-32399] Input panels are now hidden when focus changes to an object |
| that does not accept input. |
| - [QTBUG-41854] Added support for QClipboard::clear() |
| - [QTBUG-41852] Fixed memory leak in QClipboard::setMimeData() |
| - [QTBUG-41817] QClipboard::mimeData() now returns an empty object instead |
| of null pointer from QClipboard when clipboard is empty for consistency |
| with other platforms. |
| - New bearer plugin. It's now possible to get more information about the |
| different network configurations on Android. |
| - Important Behavior Changes: |
| * [QTBUG-36274] The main event loop is now stopped when the app is |
| suspended |
| |
| iOS |
| --- |
| |
| - [QTBUG-39097] Accessibility was added to the iOS platform port. This |
| enables Qt applications to be read by VoiceOver on iOS devices. |
| - [QTBUG-42276] Fixed path to QStandardPaths::DataLocation. Until now, |
| DataLocation was pointing to the Document directory. With this patch, |
| it will return the more accurate Library/Application Support. |
| Applications making use of DataLocation should move these data to the |
| new location. This can be done using the path provided by |
| DocumentLocation as the source path. |
| - [QTBUG-41458] screen resolution update after device rotation now works. |
| - [QTBUG-42345] fixed crash on startup on iOS 7.1 |
| - iOS is now using fat builds with both 32-, and 64-bit support. |
| - New launch screen added to support iPhone6/6+. |
| - QtQuick Controls now support native text selection and popup menus. |
| - Virtual keyboard visibility is now automatically managed by the platform plugin. |
| - Default theme fonts now uses Dynamic Type, which is based on user system settings. |
| |
| Linux/XCB |
| --------- |
| |
| - [QTBUG-35832] Fixed transparency of tray icons in cases where there |
| is no alpha channel or system tray visual. |
| - environment variables QT_XCB_DEBUG_XINPUT and |
| QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and replaced with logging |
| categories qt.qpa.input and qt.qpa.input.devices respectively |
| - [QTBUG-39572] Wacom touch devices are now working correctly. |
| - [QTBUG-42249] A path to a font file can now contain non-Latin characters. |
| |
| OS X |
| ---- |
| |
| - OS X 10.6 is no longer supported. |
| - OS X 10.10 is now supported. |
| - QMacStyle has been updated with better OS 10.10 support. |
| - The Qt binary packages are now configured with C++11 enabled. |
| - [QTBUG-41208] Fixed detection of writing system support in fonts for |
| some scripts such as Mkhedruli. |
| - Fixed menu item shortcuts without keyboard modifiers. |
| - [QTBUG-31301] Drag-and-drop QMimeData requests are now delayed until |
| drop time. |
| - [QTBUG-10899] Added support for ApplicationState |
| capability. Application can now detect when an application states |
| have changed as well when the dock icon has been clicked. |
| |
| - Fonts: |
| * [QTBUG-40986][QTBUG-40549] Fixed missing glyph box shown in place of |
| some uncommon Unicode code points. |
| |
| Windows |
| ------- |
| |
| - [QTBUG-38259] Changed configure defaults so that Qt5Core does not link |
| against ICU libraries anymore. Pass '-icu' to enable it. |
| - [QTBUG-35432][QTBUG-23687] Command line parsing on Windows now uses |
| the WinAPI function CommandLineToArgvW() to exactly match the quoting |
| behavior used by the majority of applications. |
| |
| - Fonts: |
| * [QTBUG-41783] Fix off-by-one in font descent when using the |
| DirectWrite font engine. |
| * [QTBUG-39961] Set default fallback font to MS Shell Dlg 2 instead of |
| Arial. |
| |
| **************************************************************************** |
| * Compiler Specific Changes * |
| **************************************************************************** |
| |
| - Release builds with Microsoft Visual Studio 2013 now enable the |
| standard-conforming C and C++ strict string behavior. This option will |
| be enabled in all builds with future Visual Studio versions. |
| Non-conforming code should be fixed for maximum portability and |
| correctness. See http://msdn.microsoft.com/en-us/library/dn449508.aspx |
| for more information. |
| |
| **************************************************************************** |
| * Tools * |
| **************************************************************************** |
| |
| - [QTBUG-30900] The obsolete findtr script was removed. |
| |
| configure & build system |
| ------------------------ |
| |
| - The -process/-fully-process/-dont-process configure options have been |
| removed due to being unnecessary and counterproductive. |
| - [QTBUG-36955] The -vcproj configure option was removed. Use "qmake -r -tp vc" |
| _after_ building Qt in case you want to use Visual Studio to work on Qt. |
| - [QTBUG-37961] Qt plugins contain version info again. |
| - [QTBUG-39216] Fixed more cases where the Qt build would pick up headers |
| from a pre-existing Qt installation. |
| - [QTBUG-41267] Fixed parallelized (jom) -debug-and-release builds. |
| |
| moc |
| --- |
| |
| - Fixed "zero as null pointer constant" warnings in moc's generated |
| code. |
| |
| qmake |
| ----- |
| |
| - [QTBUG-21910][Unix] Added 'make dist' target for SUBDIRS projects. |
| - [QTBUG-32895][iOS] Fixed structure of bundles. They can be signed now. |
| - [QTBUG-26782][VS] Fixed handling of TARGET_EXT. |
| - [QTBUG-30712][VS] Fixed handling of QMAKE_LIBFLAGS. |
| - [QTBUG-30373][VS] Using different RESOURCES in different build variants |
| no longer produces invalid vcxproj files. |
| - [QTBUG-37520][VS] Made it possible to suppress qmake warnings about |
| unknown compiler options. CONFIG+=suppress_vcproj_warnings. |
| - [QTBUG-37363][MSVC2012+] embed_manifest_exe is now properly supported. |
| - [QTBUG-41504][MSVC2012+] Building DLLs targeting Windows XP is now |
| supported. As a side effect, Windows CE makespecs must not add /ENTRY: to |
| QMAKE_LFLAGS_CONSOLE any more. The flag is hard-coded in console.prf now. |
| - [QTBUG-35318][Xcode] Fixed QMAKE_BUNDLE_DATA's path resolution. |
| - [QTBUG-39527] Fixed qtCompile() when used with jom -jN. |
| - QMAKE_EXTRA_COMPILERS' commands and depend_command are no longer mangled. |
| Use $$shell_path() and $$shell_quote() to prepare the commands correctly. |
| - Added link-time optimization support for Clang, GCC and ICC. CONFIG+=ltgc. |
| |
| rcc |
| --- |
| |
| - rcc now supports an optional, two-pass compilation that improves build |
| times for large resource bundles. This feature can be enabled by adding |
| "CONFIG += resources_big" to your .pro file. Note that this feature may |
| interfere with builds that enable link-time code generation or other |
| optimization techniques. |
| |
| **************************************************************************** |
| * Third-party libraries * |
| **************************************************************************** |
| |
| - ANGLE has been upgraded to version 2.1, bringing partial support for |
| OpenGL ES3 over Direct3D 11, numerous bug fixes, and several new vendor |
| extensions. |
| - [QTBUG-40649][QTBUG-40658][QTBUG-41031][QTBUG-41081][QTBUG-41308][QTBUG- |
| 41563] ANGLE updated to 2.1~f8602ad91e4f |
| - [QTBUG-41031] The ANGLE D3D11 renderer is now enabled by default. Systems |
| which cannot use the new renderer will automatically fall back to the D3D9 |
| renderer at runtime. |