| Qt 5.8 introduces many new features and improvements as well as bugfixes |
| over the 5.7.x series. For more details, refer to the online documentation |
| included in this distribution. The documentation is also available online: |
| |
| http://doc.qt.io/qt-5/index.html |
| |
| The Qt version 5.8 series is binary compatible with the 5.7.x series. |
| Applications compiled for 5.7 will continue to run with 5.8. |
| |
| 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. |
| |
| This release contains all fixes included in the Qt 5.7.1 release. |
| |
| **************************************************************************** |
| * License Changes * |
| **************************************************************************** |
| |
| Static libraries that are linked into executables (winmain and |
| qopenglextensions) are now licensed under BSD _and_ commercial licenses. |
| |
| **************************************************************************** |
| * Deprecation Notice * |
| **************************************************************************** |
| |
| - The following platforms or toolchains are deprecated and will be |
| removed as of Qt 5.9: |
| * Apple OS X Mavericks (v10.9) |
| * Apple iOS 7.x |
| |
| Deprecated platforms and toolchains continue to work until removed. |
| |
| - The Q_OBJECT_CHECK macro is deprecated and will be removed in Qt 6. The |
| internal, template function qt_check_for_QOBJECT_macro that it created in |
| QObject-derived classes will be removed in Qt 5.9. |
| |
| **************************************************************************** |
| * Important Behavior Changes * |
| **************************************************************************** |
| |
| - Support for the following platforms was removed in this version: |
| * Apple OS X Mountain Lion (v10.8) |
| * Apple iOS 6.x |
| |
| configure & build system |
| ------------------------ |
| |
| - The configuration system has been rewritten almost from scratch. This |
| improved the consistency between builds on Unix and Windows, but some |
| subtle unintended behavior changes are also possible. Also, some |
| obsolete options have been entirely removed and will now cause errors. |
| - It is not permissible any more to manually #define QT_NO_<FEATURE> |
| anywhere. Instead, configure's -no-feature-* options must be used. |
| Note that this does not apply to defines which modify behavior rather |
| than entirely removing features. |
| - Configure test results are now cached. Use -recheck or -recheck-all |
| to discard them. |
| - [QTBUG-32530][QTBUG-42962] The Unix configure won't pick up CFLAGS and |
| related environment variables any more. Instead, it now accepts QMAKE_* |
| variable assignments on the command line. |
| - [QTBUG-52266] Configure won't pick up QMAKESPEC from the environment |
| any more. Use the -platform option instead. |
| - Device and simulator libraries are now combined on Apple device |
| platforms (iOS). This means that there will no longer be any |
| *_simulator.a libraries and the simulator architectures will simply |
| reside alongside the device architectures in a single Mach-O file. |
| - [Darwin] Project files may not override QMAKE_MAC_SDK any more. |
| |
| QtCore |
| ------ |
| |
| - qFatal will now use std::abort to terminate the application on all |
| operating systems. Previously, ::abort() or ::exit(1) were called, |
| depending on the operating system. |
| - QLibraryInfo::licensee()/licensedProducts() were deprecated and |
| return empty strings now. |
| - Destroying a QThread which is still running will now result in |
| immediate and abnormal program termination. |
| |
| QtGui |
| ----- |
| |
| - [QTBUG-54936] QFont::toString() and QFont::key() were modified to save |
| the font's style name if one is set, invalidating any stored font |
| identifiers. QFont::fromString() was also adjusted to accommodate the |
| change. |
| |
| QtNetwork |
| --------- |
| |
| - Proxies from system settings will now be used by default. Configure |
| with -no-system-proxies to disable. |
| - [QTBUG-53649] libproxy is now turned off by default. Configure with |
| -libproxy in order to enable it again. |
| |
| **************************************************************************** |
| * Library * |
| **************************************************************************** |
| |
| QtCore |
| ------ |
| |
| - Disambiguated the relational operators comparing QByteArray with |
| QStringRef (and vice versa). |
| - Added qHash() overloads for QHash, QMultiHash. |
| - Added QDeadlineTimer, a counterpart to QElapsedTimer, used to mark a |
| time point in the future (a deadline) and determine whether such a |
| deadline has passed. |
| - Qt now relies on type traits from the C++11 standard library. |
| - [QTBUG-54981] Added Q_NAMESPACE, which can be used to add Q_ENUM_NS/ |
| Q_ENUMS, Q_FLAG_NS/Q_FLAGS and Q_CLASSINFO to a namespace. |
| - Q_IS_ENUM was deprecated. Use std::is_enum<>::value instead. |
| |
| - QChar: |
| * Added missing operator{<,>,<=,>=} comparing against QLatin1String and |
| QStringRef. |
| * Added missing operator{==,!=} comparing against QLatin1String. |
| |
| - QCommandLineOption: |
| * Added flags() and setFlags() methods. Added ShortOptionStyle and |
| HiddenFromHelp flags. |
| |
| - QDateTime: |
| * Introduced toSecsSinceEpoch, fromSecsSinceEpoch and setSecsSinceEpoch |
| functions, which use 64-bit integers to represent the number of |
| seconds. |
| * The toTime_t, fromTime_t and setTime_t functions are deprecated and |
| will be removed in Qt 6.0. For new code, use the equivalent functions |
| with "SecsSinceEpoch" in the name, or the equivalent ones with |
| millisecond accurancy that have existed since Qt 4.7. |
| * Added string formatting type Qt::ISODateWithMs. |
| |
| - QFileInfo: |
| * QFileInfo now reports file times with millisecond precision on Unix |
| systems. |
| |
| - QFileSystemWatcher: |
| * [QTBUG-55896] Fixed a bug that caused QFileSystemWatcher to mis-handle |
| file paths that contained non-US-ASCII characters on Apple platforms. |
| |
| - QJsonDocument: |
| * [QTBUG-39751] fromVariant can now take a QVariantHash argument. |
| * Fixed a number of bugs that could cause crashes when loading corrupt |
| binary JSON data. |
| |
| - QJsonValue: |
| * [QTBUG-43077] QJsonValue(Null).toVariant() now returns a QVariant of |
| type QMetaType::Nullptr instead of an invalid QVariant. |
| |
| - QLatin1String: |
| * Added at(), operator[](), mid(), right(), left(). |
| |
| - QLibraryInfo: |
| * Added QLibraryInfo::version(), which returns the current version of |
| the Qt library as a QVersionNumber object. |
| |
| - QLine/QLineF: |
| * Added center(). |
| |
| - QLockFile: |
| * Fixed a bug that caused QLockFile to over-sleep while waiting for the |
| lock file to become available. |
| |
| - QMetaType: |
| * std::nullptr_t is now a built-in Qt metatype. |
| |
| - QModelIndex: |
| * QModelIndex::child has been deprecated due to its lack of generality. |
| Use model->index(row, column, index) instead. |
| |
| - QMutex: |
| * QMutex now fully models the TimedLockable concept by providing the |
| try_lock, try_lock_for and try_lock_until functions, therefore making |
| it usable in Standard Library lock management classes and functions. |
| |
| - QObject: |
| * The QT_NO_NARROWING_CONVERSIONS_IN_CONNECT macro has been added. When |
| using the new connection syntax (PMF-based) this macro makes it |
| illegal to narrow the arguments carried by the signal, and/or to |
| perform floating point to integral implicit conversions on them. When |
| the macro is defined, depending on your compiler a QObject::connect() |
| statement triggering such conversions will now fail to compile. |
| |
| - QPersistentModelIndex: |
| * QPersistentModelIndex::child has been deprecated due to its lack of |
| generality. Use model->index(row, column, index) instead. |
| |
| - QStringList: |
| * Added join(QLatin1String) overload. |
| |
| - QStringRef: |
| * Added missing operator{<,>,<=,>=} comparing against QLatin1String and |
| QString. |
| |
| - QSysInfo: |
| * The output of QSysInfo::prettyProductName now includes the Windows |
| OS/kernel version number. In case of future versions of Windows, a |
| valid string is now returned. |
| |
| - QSettings: |
| * [QTBUG-56124] Fixed a bug that caused QSettings to fail on Apple |
| platforms when strings with embedded null (\0) bytes were present |
| |
| - QSharedPointer: |
| * [QTBUG-52369] Fixed a bug that caused QSharedPointer to fail to compile |
| if it was initialized with a nullptr literal. |
| * Fixed a bug that made QSharedPointer delete the pointer it held with the |
| wrong destructor if the type of the QSharedPointer and that of the object |
| passed on the constructor were different. Its behavior is now the same as |
| std::shared_ptr. |
| |
| - QStandardPaths: |
| * [QTBUG-55507] Fixed the QStandardPaths::FontsLocation on XDG systems to |
| be $XDG_DATA_DIR/fonts. |
| * Fixed handling of potential paths that do not exist on Windows. Now, |
| QStandardPaths may return storage locations that may not exist on all |
| platforms. |
| |
| - QTimer: |
| * Added support for std::chrono duration objects for QTimer methods, |
| like QTimer::singleShot and QTimer::setInterval. |
| |
| - QWaitCondition: |
| * Added notify_one() and notify_all() to make QWaitCondition be usable from |
| algorithms that use the Standard Library naming convention. |
| |
| QtDBus |
| ------ |
| |
| - QDBusConnection: |
| * Fixed a bug that would cause QDBusConnection::connect() to return true |
| if a slot was already connected to the same D-Bus signal. QtDBus does |
| not support multiple connections. |
| |
| QtGui |
| ----- |
| |
| - [QFileDialogOptions/QFontDialogOptions/QMessageDialogOptions/ |
| QColorDialogOptions] These classes no longer have value semantics, but |
| need to be held in QSharedPointer (as they always were). To copy an |
| instance, use the clone() method. |
| - QOpenGLTextureBlitter, a utility class to draw textured quads, has been |
| made public. |
| - [QTBUG-38825] Fixed QTextEdit to match undo functionality of QLineEdit |
| to group two sequential inserts into one undo action. |
| - [QTBUG-51844] Added rotation and uniqueId properties to |
| QTouchEvent::TouchPoint. This is mainly for the benefit of the TUIO |
| plugin so far: it now supports tracking physical objects (fiducials) |
| on the touchscreen surface, as long as the object's ID can fit in a |
| 64-bit integer. QPointingDeviceUniqueId is a wrapper for the ID, |
| designed to be extensible to support other types of IDs in the future. |
| - [QTBUG-52510] A stationary touchpoint event is delivered if its |
| velocity changes. This is to ensure that the application will be |
| notified when a TUIO fiducial object comes to rest. |
| - [QTBUG-53076] Add QGuiApplication::applicationDisplayNameChanged() |
| signal. |
| |
| - QAbstractTextDocumentLayout: |
| * Added imageAt() and formatAt() methods, which respectively can be used |
| to retrieve the source link of the image under the cursor, or the |
| QTextFormat of the text under the cursor. |
| |
| - QFont: |
| * [QTBUG-48043] The default value of QFont::stretch() is now 0 to |
| indicate any default stretch is acceptable. |
| |
| - QRegion: |
| * Is now iterable as a container of QRects: added {c,}{r,}{begin,end}(). |
| |
| - Text handling: |
| * [QTBUG-51411] Fixed performance hit from showing large QTextDocuments |
| in a QTextEdit or QTextBrowser. (Regression introduced in Qt 5.3.0) |
| * [QTBUG-50090] Fixed line spacing with some scalable fonts containing |
| bitmaps with the Freetype font engine. |
| * [QTBUG-56346] Fixed QStaticText when manually breaking lines and no |
| text width was set. |
| * [QTBUG-56659] Fixed a regression where raster fonts on Windows were |
| detected as smoothly scalable and thus rendering with said fonts in Qt |
| Quick would break. |
| * [QTBUG-51223] Fixed synthesized oblique for non-latin text on |
| platforms using the basic font database, such as Android. |
| * [QTBUG-56672] Fixed list of supported sizes for bitmap fonts on |
| Windows. |
| * [QTBUG-56714] Fixed a bug where a no-break space would sometimes cause |
| the first character of the containing line to not be displayed. |
| * [QTBUG-55856] Fixed rendering of large fonts when a device pixel ratio |
| is set and the Freetype engine is used. |
| |
| QtNetwork |
| --------- |
| |
| - Added QNetworkDatagram class, along with new function receiveDatagram() |
| in QUdpSocket that returns it, and an overload to writeDatagram() that |
| can accept it. |
| - Added QSctpServer and QSctpSocket classes. Note that these need to be |
| explicitly enabled via a configure option. |
| - [QTBUG-50956] Added support for HTTP/2 protocol |
| |
| - QSslSocket: |
| * [QTBUG-39077] TLS PSK ciphers are possible in server sockets. |
| * It is now possible to set custom Diffie-Hellman parameters for |
| QSslSocket-based servers. |
| |
| - QTcpServer: |
| * [QTBUG-51288] It is now possible to use QTcpServer with an externally |
| created QTcpSocket. |
| |
| QtSql |
| ----- |
| |
| - QSqlDatabase: |
| * When connecting to a MySQL server whose version is 5.5.3 or higher, |
| the default connection charset is now utf8mb4 instead of utf8 to allow |
| 4-byte UTF-8 encodings. |
| |
| - SQLite: |
| * Added notification feature to SQLite driver |
| |
| QTestLib |
| -------- |
| |
| - [QTBUG-44030] Added QTest::createTouchDevice() for use in autotests |
| which generate touch events. |
| - Added ref-cycles perf counter. |
| - QFETCH variables can now be declared const (QFETCH(const T, name)). |
| - It is now possible to use variables of types with an explicit operator |
| bool in the QVERIFY macro. |
| |
| QtWidgets |
| --------- |
| |
| - QFormLayout: |
| * [QTBUG-15990] Added removeRow(), takeRow(). |
| |
| - QMainWindow: |
| * [QTBUG-56628] Fixed crash using takeCentralWidget when the central |
| widget was not set. |
| |
| **************************************************************************** |
| * Platform-specific Changes * |
| **************************************************************************** |
| |
| - Added technology preview support for Apple tvOS and Apple watchOS. |
| - Added initial support for Microsoft Visual Studio 2017, which uses the |
| mkspec "win32-msvc2017". Full support will happen after the final release |
| of that compiler. |
| |
| Android |
| ------- |
| |
| - [QTBUG-48948] Show password while typing is now supported |
| - [QTBUG-55035][QTBUG-50759] Introduced a mechanism to forward |
| permission related callbacks on Activity objects to interested |
| parties. |
| |
| Apple platforms |
| --------------- |
| |
| - Added QImage::toCGImage() that returns a CGImage. |
| - Added functions that convert Qt types QPoint/QPointF, QRect/QRectF and |
| QSize/QSizeF to and from CGPoint, CGRect and CGSize. Note that QPoint, |
| QRect and QSize do not provide fromCGXxx functions since that would |
| silently lose precision. |
| |
| iOS |
| --- |
| |
| - Precompiled headers are now supported on iOS. |
| - Starting from iOS 10, Apple requires all apps that need access to photos |
| to have the key 'NSPhotoLibraryUsageDescription' in the Info.plist. |
| Therefore, to get the same support in Qt (when, e.g., using a file |
| dialog), the Info.plist assigned to QMAKE_INFO_PLIST will need this key |
| as well. |
| |
| macOS |
| ----- |
| |
| - Speech to text dictation now works for Qt text input. |
| - [QTBUG-33708] Fixed underline position in font rendering. |
| |
| Linux |
| ----- |
| |
| - [QTBUG-39959] QWidget-based applications running on the eglfs platform |
| plugin can now request 180 or 90 degrees rotated output by setting the |
| QT_QPA_EGLFS_ROTATION environment variable. |
| - KDE/Gnome themes now implement QPlatformTheme::fileIconPixmap(), showing |
| file icons. |
| |
| Windows |
| ------- |
| |
| - [QTBUG-31476] QFactoryLoader now filters potential plugins by the |
| ".dll" suffix. |
| - [QTBUG-56239] 'What's this' button is now shown by default only for |
| QWidget dialogs. |
| - [QTBUG-53833] QProcess::startDetached() changed behavior on Windows: |
| it no longer creates a new console window unconditionally, instead it |
| passes the same creation flags to CreateProcess as QProcess::start(). |
| |
| - Text handling: |
| * [QTBUG-54740] Fixed embedding fonts in PDF when dpi scaling is active |
| or when the hinting preference was none or vertical hinting. |
| * [QTBUG-47485] Fix selecting non-regular fonts when using the Freetype |
| engine. |
| * [QTBUG-49346] Fixed rendering error when using the MingLiU fonts at |
| certain combinations of pixel size and scale. |
| |
| **************************************************************************** |
| * Tools * |
| **************************************************************************** |
| |
| configure & build system |
| ------------------------ |
| |
| - The -no-feature-* option family was integrated with the rest of the |
| configuration system. Numerous existing features were made optional, |
| and build problems in various reduced configurations were fixed. |
| This is an ongoing effort known as "Qt Lite". |
| - Numerous Qt modules outside qtbase now support configure options. |
| In a module-by-module build, these can be passed to qmake itself, |
| after a -- option. |
| - Introduced the qtConfig(<feature>) qmake function to replace the |
| patterns contains(QT_CONFIG, <feature>) and load(qfeatures)+ |
| contains(QT_DISABLED_FEATURES, <feature>). |
| Likewise, the C++ macro QT_CONFIG(<feature>) was introduced to |
| replace the pattern !defined(QT_NO_<FEATURE>). |
| The old methods are effectively deprecated and will stop working at |
| some point in the near future. |
| - Use of -sysroot will now trigger a cross-build even if -platform and |
| -xplatform are the same. |
| - The JPEG & GIF handlers and the SQL drivers are now always built as |
| plugins, even in static builds (static "plugins" in this case). |
| - [GCC] Include paths from system libraries are now marked as such, |
| resulting in fewer warnings the user cannot do anything about. |
| - [Windows] config.status.bat is now created, like on Unix. |
| - [QTBUG-46974] Fixed location of config.status in top-level builds. |
| - [QTBUG-38792][Unix] The -redo option is now accepted, like on Windows. |
| - It's now possible to add more arguments when -redo is used. Note that |
| these arguments are not saved in turn. Likewise for config.status. |
| - [QTBUG-32896][iOS/clang] Added missing CFBundleIdentifier to library |
| template. |
| - [QTBUG-47624] Fixed abort when some, but not all, XCB dependencies |
| are met. The feature is now disabled instead, as expected. |
| - [QTBUG-50838] The Raspberry Pi EGL detection now uses pkg-config. |
| - [QTBUG-52112][Android] Plugins now have a SONAME, as required by |
| Android 6+. |
| - [QTBUG-54438] Fixed launching tests, examples, and build tools in |
| some configurations. |
| - [QTBUG-56289][GCC@Windows] Fixed -separate-debug-info. |
| - [QTBUG-57086] Added support for Visual Studio 2017. |
| |
| qdbusxml2cpp |
| ------------ |
| |
| - [QTBUG-34126] qdbusxml2cpp now supports the --verbose switch, which |
| provides more details when parsing invalid XML sources. |
| |
| qmake |
| ----- |
| |
| - Added the $$take_first(), $$take_last(), $$num_add(), $$str_size(), |
| $$str_member(), and $$sorted() functions. |
| - The error() function can now be called without arguments to exit |
| silently. Use after write_file() and similar functions which already |
| print an error message. |
| - The $$system() function can return the command's exit code now. |
| - The $$prompt() function can now print the prompt verbatim. |
| - QMAKE_EXTRA_TARGETS will now consistently treat the target as a file |
| name (separator adjustment and quoting). |
| - [QTBUG-16904][VS] Fixed warning about circular dependencies when |
| Q_OBJECT is used in .cpp files. |
| - [QTBUG-36256] packageExists() and PKGCONFIG can now be used |
| regardless of whether Qt itself was built with pkg-config support. |
| - [QTBUG-43468][WinRT] Added option to use verbatim manifest files. |
| - [QTBUG-53905] Fixed OBJECTIVE_SOURCES being moc'd twice. |
| - [QTBUG-55591][VS2015] Added support for the /DEBUG:FASTLINK option. |
| - [QTBUG-56507] Fixed parallel builds when a lex source refers to a |
| file generated from a yacc source. |
| - [QTBUG-56594][MSVC] Fixed PDB files not being installed for static |
| libraries. |
| |
| moc |
| --- |
| |
| - [MSVC] qmake and moc now cooperate to use the Visual Studio environment |
| variables (set by the VCVARSALL.BAT script) to find system include |
| files. A possible consequence is that moc parses application headers |
| slightly differently, depending on #if conditions that depended on |
| macros that previous versions had not seen #define'd. Implementers of |
| other buildsystems are advised to pass the --compiler-flavor=msvc option |
| to moc. |