Qt 5.3 introduces many new features and improvements as well as bugfixes over the 5.2.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.3 The Qt version 5.3 series is binary compatible with the 5.2.x series. Applications compiled for 5.2 will continue to run with 5.3. 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. **************************************************************************** * Important Behavior Changes * **************************************************************************** - SIMD support in CPUs: * [QTBUG-30440] Qt no longer checks for support for the Neon FPU on ARM platforms at runtime. Code optimized for Neon must be enabled unconditionally at compile time by ensuring the compiler supports Neon. You may need to edit your mkspec for that. * Qt now automatically generates code for processors supporting SSE2 on i386 platforms. To disable this, pass the -no-sse2 option during Qt configuration. Since this feature has been present on CPUs for 10 years and since Qt no longer checks for runtime support for SSE2, we strongly encourage users to leave the default setting on for best performance. - For Linux distributions that must retain support for CPUs without SSE2, we recommend doing two builds of Qt and installing the SSE2-enabled libraries in the LIBDIR/sse2 directory (specially QtGui, QtQml and QtQuick libraries). Tools, plugins, and examples are not affected. - See discussion on the Qt development mailing list: http://lists.qt-project.org/pipermail/development/2013-November/014085.html - SSL and security: * The default set of ciphers used by QSslSocket has been changed to exclude ciphers that are using key lengths smaller than 128 bits. These ciphers are still available and can be enabled by applications if required. * [QTBUG-20666] Support for DH and ECDH key exchange cipher suites when acting as an SSL server has been made possible. This change means the you can now implement servers that offer forward-secrecy using Qt. * Running Qt applications that are setuid is no longer allowed by default. If you really need to do this then you can call QCoreApplication::setSetuidAllowed(true) before creating the QCoreApplication instance. - UTF-8 decoding: * The QString and QTextCodec UTF-8 decoder changed behavior slightly: when it encounters invalid sequences, it will insert one replacement character per byte that is invalid, instead of one replacement character for the whole invalid length. **************************************************************************** * Platform deprecation notice * **************************************************************************** - The support for deployment on OS X 10.6 (Snow Leopard) is deprecated in Qt 5.3, and will be removed in Qt 5.4. The platform is currently not tested, and most likely has issues that are not fully documented. **************************************************************************** * General * **************************************************************************** - Support for the following platforms has been removed, due to lack of interest in updating support: INTEGRITY, VxWorks, Solaris on UltraSPARC (with the Sun Studio compiler suite), AIX on POWER processors (with IBM Visual Age compiler suite). - Builtin command-line options such as -reverse, -session, -style -etc. now all support double dash, e.g. --reverse, --session, --style... **************************************************************************** * Library * **************************************************************************** QtCore ------ - Added QSignalBlocker, a RAII-style wrapper around QObject::blockSignals(). - QLibraryInfo provides information on how Qt was built. - Added class QMarginsF to support handling margins with floating-point values. - Atomic support: * Added more operations to the atomic classes, including operator T(), operator=(T), operator++, operator--. For the QAtomicInteger, bit-manipulation operations are also provided, both in operator and in fetchAndXxxYyyyyy modes. - Event loop: * [QTBUG-36611] QCoreApplication::hasPendingEvents and QAbstractEventDispatcher::hasPendingEvents are now deprecated. Please refer to the documentation for more information. - Logging: * It is now possible for the qCDebug macros to be used in a printf style. * All qCDebug categories are enabled by default, except for Qt's own categories. * The logging framework can now be configured with an .ini file. * Q_LOGGING_CATEGORY and Q_DECLARE_LOGGING_CATEGORY now return a const object. - QByteArray: * Added NSData/CDataRef converters for QByteArray. - QChar: * Added JoiningType enum and joiningType() method that deprecates the old QChar::Joining enum and joining() method. - QFileSelector: * [QTBUG-35073] The identifier for OS X has been changed back to 'osx' from 'mac', and 'mac' and 'darwin' have now been added as selectors for Darwin OS (which is the base of both OS X and iOS). - QHash/QSet: * Added qHash overloads for float, double and long double. - QJsonArray: * Added convenience methods to QJsonArray for appending QJsonValues - QJsonValue: * Added constructor to QJsonValue for const char * * QJsonValue::fromVariant() will now convert single-precision Floats into Doubles instead of Strings - QMargins: * Added missing addition and subtraction operators. - QProcess: * [QTBUG-26136] Added processId() to QProcess. This function will, unlike pid(), return the actual process identifier on both Windows and Unix. - QRect: * Added QMargins subtraction operator. - QSettings: * [QTBUG-9824][QTBUG-21062][QTBUG-22745] QSettings now returns the correct value for isWritable() when using SystemScope settings. - QSortFilterProxyModel: * [QTBUG-30662] Fixed sorting when a previously empty proxy model becomes populated because of a change in the filter. - QStandardPaths: * [QTBUG-34631] Added QStandardPaths implementation for Android. - QString: * Added QLatin1String overload of contains() * QString::toUcs4 now does not return invalid UCS-4 code units belonging to the surrogate range (U+D800 to U+DFFF) when the QString contains malformed UTF-16 data. Instead, U+FFFD is returned in place of the malformed subsequence. - QTextCodec: * Encoding a QString in UTF-32 will now replace malformed UTF-16 subsequences in the string with the Unicode replacement character (U+FFFD). - QVarLengthArray: * Added the indexOf, lastIndexOf and contains functions to QVarLengthArray. These functions make the class more similar to QVector. - Windows: * [QTBUG-35194] Now QStandardPaths::DownloadLocation returns the proper path for Windows Vista and up QtDBus ------ - QtDBus adaptors now include the PropertiesChanged signal in introspection data - QDBusServer: * Added method to QDBusServer to allow anonymous client connections, even if the connecting client is not authenticated as a user. QtGui ----- - Added setSwapInterval() to QSurfaceFormat. Platforms that support setting the swap interval are now defaulting to the value of 1, meaning vsync is enabled. - [QTBUG-35220] Reading bmp images with alpha channel is now supported - [QTBUG-36394] The main Embedded Linux platform plugins (eglfs, linuxfb, kms) are changed to behave identically with regards to terminal keyboard input: it is turned off by default on all of these platforms. If this feature is not desired, it can be disabled by setting the environment variable QT_QPA_ENABLE_TERMINAL_KEYBOARD. - [QTBUG-36374] Mouse hotplugging is now fully supported in eglfs when running on Embedded Linux systems with libudev support enabled. - [QTBUG-36603] Windows Accessibility now handles the disabled state of widgets correctly. - Accessibility on Linux now reports the active state correctly. - [QTBUG-36483] Qt builds on Windows can now be configured for dynamic loading of the OpenGL implementation. This can be requested by passing -opengl dynamic to configure. In this mode no modules will link to opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will dynamically choose between desktop and Angle during the first GL/EGL/WGL call. This allows deploying applications with a single set of Qt libraries with the ability of transparently falling back to Angle in case the opengl32.dll is not suitable, due to missing graphics drivers for example. - Added class QPageLayout to support handling page layouts including the page size, orientation and margins. - [QTBUG-28813][QTBUG-29930][QTBUG-35836] Fixed regression in arabic text rendering. - [QTBUG-37332] GLES3 and desktop OpenGL are now fully supported with EGL - [QTBUG-36993] Native (that is, not distance field based) text rendering is now functional on OpenGL 3.2+ core profiles too. - Accessibility: * [QTBUG-37204] Implemented text attributes to enable VoiceOver to read QTextEdit and QPlainTextEdit. * Assistive apps such as VoiceOver can now set the focus on widgets and controls. - QColor: * Exported highly optimized methods for premultiply and unpremultiply of QRgb values. - QFont: * Added qHash overload for this class. - QGuiApplication: * Restored support for -title command line argument on X11 and added -qwindowtitle on all platforms. - QImage: * Added rvalue-qualified overloads for mirrored(), rgbSwapped() and convertToFormat(), allowing in-place conversion in some cases - QOpenGLFramebufferObject: * [QTBUG-35881] Added takeTexture() for retrieving and detaching the texture from the framebuffer object. - QPageSize: * Added new QPageSize class to implement Adobe Postscript PPD standard page sizes. This class supports the standard page sizes, names and keys from the PPD standard, and provides convenient size and rect conversion methods. - QPagedPaintDevice: * [QTBUG-27685][QTBUG-25744] Paged paint devices such as QPrinter and QPdfWriter now support all Postscript standard page sizes. - QPdfWriter: * The QPdfWriter now supports setting the PDF orientation, layout and resolution by using QPageSize and QPageLayout. - QTextLayout: * [QTBUG-18060] Fixed visual cursor movement in bidirectional text. - QWindow: * QWindow::icon() now defaults to the application icon, which can be set with QGuiApplication::setWindowIcon(). QtNetwork --------- - [QTBUG-18714] Added support for the SPDY protocol (version 3.0). - QNetworkReply: * [QTBUG-30880] Added more (specific) HTTP status codes to NetworkError enum. - QSslConfiguration: * [QTBUG-33208] Added support for the Next Protocol Negotiation (NPN) TLS extension. QtPrintSupport -------------- - [QTBUG-29663] Made the Qt buildsystem automatically include the necessary plugins so that static applications can print. - CUPS 1.4 is now required for print support on Linux and other *nix platforms. - QPrintPreviewDialog: * [QTBUG-36561] Fixed initialization of QPrintPreviewDialog's image resources for static builds. - QPrinter: * QPrinter can now use QPageSize and QPageLayout in the public api to control the page layout for a print job. - QPrinterInfo: * [QTBUG-35248] Added new public api for isRemote(), state(), defaultPageSize(), supportedPageSizes(), supportsCustomPageSizes(), minimumPhysicalPageSize(), maximumPhysicalPageSize(), supportedResolutions(), availablePrinterNames(), and defaultPrinterName(). The use of availablePrinters() is discouraged due to performance concerns. QtSql ----- - QSqlQuery::isNull(field) now correctly returns true for "no such field". - QSqlQuery::isNull(fieldname) is a new overload. - [QTBUG-12186] Fixed the order of values with positional binding in a QSqlQuery - QSQLITE: * Creating temporary databases is now possible * Empty database name now opens in-memory database. - QSqlError * Now handles alphanumeric error codes. Used by QPSQL. Old numeric code is deprecated. QtTest ------ - Added test duration to xml output. When running tests with xml output a new tag of the form is added to each test function and the test as a whole. - Added a CSV logging mode that is suitable for importing benchmark results into spreadsheets. This can be enabled by the -csv option on the command-line. The CSV logging mode will not print test failures, debug messages, warnings, etc. - QtTest now prints an escaped version of QStrings that failed to compare with QCOMPARE. That is, instead of converting non-printable characters to question marks, QtTest will print the Unicode representation of the character in question. - Windows: * [QTBUG-35743] Use correct UTF-8 encoding for XML test results on platforms with different console encoding. QtWidgets --------- - Accessibility: * Fixed QTextEdit not reporting newlines to accessibility frameworks and add editable text interface. - QAbstractSpinBox: * [QTBUG-5142] QSpinBox and QDoubleSpinBox widgets can now show the group (thousands) separators. - QColorDialog: * Ensured QColorDialog::DontUseNativeDialog is respected when showing the dialog. - QDateEdit: * [QTBUG-36692] Fixed incorrect appearance on OS X of QDateEdit with calendarPopup enabled. - QDrag * Fixed Drag and Drop driven by touch-synthesized mouse events on Windows. - QListView: * [QTBUG-4714] Fixed QListView ignoring the grid size for word wrapping in icon mode - QMdiSubWindow: * [QTBUG-9933][QTBUG-27274] Fixed setWindowFlags() for QMdiSubWindow. - QMenu: * [QTBUG-20094] Enabled sloppy submenu mouse navigation. * [QTBUG-36142] QMenu now correctly uses text color set by style sheet for menu items on Windows. * [QTBUG-36218] Fixed position of menu gutter on Windows when using a custom widget action. - QPlainTextEdit: * Added find method overload using QRegExp - QSpinBox: * [QTBUG-3032] Fixed keyboard selection with multiple-character strings. - QScrollArea: * [QTBUG-36314] The setting for click position is now respected on OS X. - QTextDocument: * [QTBUG-33336] Added support for empty inline elements in block tags. - QTextEdit: * Added find method overload using QRegExp - QWidget: * [QTBUG-25831] Restored the Qt 4 behavior in the sequence of events that are delivered to widget windows and their children when a mouse double click happens: the second MouseButtonPress event from Qt 5.0-5.2 is no longer sent. * [QTBUG-33716] QWidgets embedded in QGraphicsProxyWidget are no longer sent close events when the app is closed on OS X. * [QTBUG-36178] Fixed an issue where stay-on-top widgets would cover their own children on OS X. - QWizard: * [QTBUG-7484] Added NoCancelButtonOnLastPage option. * [QTBUG-36192] Fixed frame when using Vista style/MSVC2012. - Text support: * [QTBUG-36444] Fixed off-by-one in the height of text background. - Windows: * [QTBUG-21371][QTBUG-4397] QWidget::restoreGeometry() now restores maximized/full screen widgets to the correct screen. **************************************************************************** * Compiler Specific Changes * **************************************************************************** - Variadic macros are now enabled more liberally for gcc, clang, icc. If you have warnings (because you e.g. compile with -pedantic), disable them by -Wno-variadic-macros. **************************************************************************** * Platform Specific Changes * **************************************************************************** Android ------- - [QTBUG-34781] Fixed regression in "make install" on library projects on Android so they can be used inside subdirs projects again. - [QTBUG-36074] Fixed crash on populating large combo boxes or menus. - [QTBUG-36528] Fixed QDir::entryList() for assets scheme to no longer skip the first file in the directory. - [QTBUG-30652] It is now possible to define a splash screen which will be visible until the first window is created. - [QTBUG-33704] Sped up first time directory listing in assets by using pregenerated entry list. - [QTBUG-37738] Fixed font merging problem which caused e.g. missing glyphs for Arabic numerals. - [QTBUG-36025] Fixed a memory leak in the clipboard - Fonts: * [QTBUG-36789] Fixed support for Arabic text. Linux ----- - Systems with systemd may now pass -journald to configure to send logging output to journald. Logging will still be sent to stderr for interactive applications (run from a tty) or with QT_NO_JOURNALD_LOG set to a non-empty value. OS X ---- - [QTBUG-18980][QTBUG-38246] Use CoreText text shaping engine for support of complex scripts. If required, the shaping engine used in previous versions can be preferred by configuring Qt with -no-harfbuzz. Alternatively, the QT_HARFBUZZ environment variable could be set to "old". Windows ------- - Introduced experimental direct2d platform plugin for Windows. This plugin shares most code with the current windows plugin, but substitutes a direct2d-based paint engine for window backing stores and pixmaps. - QtWidgets / QFileDialog: * Handled the case of having trailing spaces in a filename correctly so if the filename ends up being empty that the parent path is used instead. - Windows Embedded: * Fixed building issue when configuring Qt with -qtlibinfix X11 / XCB --------- - Qt now supports XInput2 smooth scrolling events **************************************************************************** * Tools * **************************************************************************** moc --- - [QTBUG-33668] Fixed passing -D of a macro defined to something more complex than a single identifier. - QTBUG-36128: * [QTBUG-36128] Fixed sign conversion warning in generated file. qdbus ----- - [QTBUG-36524] Fixed a bug that caused the qdbus tool to crash when trying to display remote interfaces that had complex types without a matching base Qt type.