1Qt 5.4 introduces many new features and improvements as well as bugfixes 2over the 5.3.x series. For more details, refer to the online documentation 3included in this distribution. The documentation is also available online: 4 5 http://qt-project.org/doc/qt-5.4 6 7The Qt version 5.4 series is binary compatible with the 5.3.x series. 8Applications compiled for 5.3 will continue to run with 5.4. 9 10Some of the changes listed in this file include issue tracking numbers 11corresponding to tasks in the Qt Bug Tracker: 12 13 http://bugreports.qt-project.org/ 14 15Each of these identifiers can be entered in the bug tracker to obtain more 16information about a particular change. 17 18**************************************************************************** 19* Deprecation Notice * 20**************************************************************************** 21 22 - The Q_COMPILER_xxx macros for C++14 compiler features introduced in Qt 23 5.3 are deprecated and will not be updated for new compilers either. 24 User code should be changed to use the macros from Standing Document 6 25 instead: 26 http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations. 27 This does not affect C++11 feature macros. 28 29**************************************************************************** 30* Important Behavior Changes * 31**************************************************************************** 32 33 - QExplicitelySharedDataPointer's copy constructor which performs a 34 static_cast from "X *" to "T *" (when constructing a 35 QExplicitlySharedDataPointer<T> from a QExplicitlySharedDataPointer<X>) 36 doesn't perform a static_cast from "X *" to "T *" any more. Instead, an 37 implicit cast is now performed. This change will break compilation of code 38 that relied on the downcast (i.e. cast towards a more derived type) of the 39 templated type when copy constructing a QExplicitelySharedDataPointer 40 object. Please refer to the class documentation for more information about 41 this issue and a workaround to keep old code compiling. 42 - QImageReader now automatically rotates JPEG images according to Exif 43 orientation 44 - [QTBUG-18980] HarfBuzz-NG is now the default shaper on all platforms. 45 This results in a better shaping results for various languages, better 46 performance, and lower memory consumption. 47 - [QTBUG-41858] Changed QStringRef::right() to be consistent with 48 QString::right(). The function now returns the N right-most characters, 49 like the documentation already claimed. 50 - The mutable Java-style iterators like QListMutableIterator and 51 QHashMutableIterator no longer set the parent container to unsharable 52 mode. If you create a copy of the container being iterated on after the 53 iterator, any changes done with the iterator might affect the copy too. 54 55 - Logging (including qDebug and qWarning): 56 * Support for the deprecated environment variables QT_NO_JOURNALD_LOG 57 and QT_ANDROID_PLAIN_LOG has been removed. Instead, set 58 QT_LOGGING_TO_CONSOLE to 1 to force logging to the console (stderr). 59 Set that variable to 0 to force logging to the system-specific event 60 log (if any). 61 * [QTCREATORBUG-12564] Log output will now go to the system log (if 62 support for it was compiled into Qt) if the application has no 63 controlling terminal or console window. Set QT_LOGGING_TO_CONSOLE to 1 64 to force logging to go to stderr. 65 66 - QSettings: 67 * [QTBUG-41812] QSettings::value() now returns an invalid QVariant when 68 passing an empty key. The code path ran into an assert, which was only 69 noticeable in debug builds. 70 * [QTBUG-21739] The locking mechanism inside QSettings has changed 71 and is no longer compatible with the one of previous versions of 72 Qt. There might be corruption if two applications running different 73 versions of Qt are writing to the same config file at the same 74 time. You must also now have write permissions in the directory 75 containing the settings file in order to write settings. 76 77**************************************************************************** 78* Library * 79**************************************************************************** 80 81QtConcurrent 82------------ 83 84 - [QTBUG-17220] run() now optionally takes as its first argument the 85 QThreadPool to run the task on. 86 87QtCore 88------ 89 90 - Added QEnableSharedFromThis, a class that allows obtaining a 91 QSharedPointer for an object already managed by a shared pointer. 92 - Added qHashBits() to aid implementing qHash() overloads for custom 93 types. 94 - Added new QByteArrayList class. 95 - Added QStorageInfo class to retrive information about mounted volumes 96 and drives 97 98 - Logging: 99 * QT_MESSAGE_PATTERN can include a backtrace using %{backtrace} 100 * QT_MESSAGE_PATTERN can include a timestamp using %{time}. By 101 default, this shows the time in ISO format (YYYY-MM-DDTHH:mm:ss), 102 but a different format string can be specified in the tag (e.g., 103 %{time YYYYMMDDHHmmsszzz}). If the format is "process", Qt will 104 display the elapsed time since the process started. 105 * Added QtMsgType argument to QLoggingCategory constructor and 106 Q_LOGGING_CATEGORY macro that controls the default category 107 configuration. 108 * File, line, function information are not recorded anymore for logging 109 statements in release builds. Set QT_MESSAGELOGCONTEXT explicitly to 110 enable recording in all configurations. 111 112 - QAbstractProxyModel: 113 * [QTBUG-39549] QAbstractProxyModel now forwards the drop-related API. 114 115 - QByteArray: 116 * Added convenience methods to convert directly to and from std::string. 117 * Fixed a bug that would cause QByteArray to stop converting toUpper or 118 toLower at the first embedded null character. 119 120 - QCommandLineParser: 121 * Added addOptions() method. 122 123 - QElapsedTimer: 124 * Is no longer a POD; its default constructor now initializes the object to 125 an invalid QElapsedTimer 126 127 - QFlags: 128 * [QTBUG-39786] Added initializer_list constructor 129 130 - QFuture: 131 * [QTBUG-17220] Can now be used with any QThreadPool, not just 132 globalInstance(). 133 134 - QPair: 135 * Can now be used in C++11 constexpr contexts. 136 137 - QSaveFile: 138 * Now follows symbolic links when writing to a link instead of 139 replacing the link with the contents. 140 141 - QSettings: 142 * [QTBUG-21739] Fixed data loss while writing the config to the disk 143 fails. 144 145 - QStandardPaths: 146 * [QTBUG-38483] QStandardPaths now has new enumeration values 147 AppDataLocation, AppLocalDataLocation to be able to differentiate 148 between roaming and local paths on the Windows operating system. 149 DataLocation is deprecated in favor of AppDataLocation. 150 151 - QString: 152 * QString can now split a string to a list of QStringRef. 153 * Added the QStringRef::split() function 154 155 - QTextStream: 156 * QTextStream now uses group separators when writing floating-point 157 numbers when the locale is not the C locale. The old behavior can be 158 restored by setting QLocale::OmitGroupSeparator on the locale. 159 160 - QTimer: 161 * [QTBUG-26406] Implemented new style connect syntax, including 162 functors, in QTimer::singleShot 163 164 - QUrl: 165 * QUrl::fromLocalFile now returns an empty URL if the input string is 166 empty. 167 168 - QVariant: 169 * [QTBUG-40363] Fixed ordered comparison between QVariants that do not 170 match but produce identical toString output. 171 172 - QVector: 173 * Added removeOne() and removeAll() for QList compatibility. 174 175 - QWeakPointer: 176 * Added lock() method for std::weak_ptr compatibility. 177 * Added member-swap function. 178 179 - QtJson: 180 * [QTBUG-26606] QJsonArray and QJsonObject now supports C++11 181 initializer lists. 182 183 - QtMath: 184 * Introduced qNextPowerOfTwo methods. 185 186QtDBus 187------ 188 189 - Blocking calls that take a long time will now generate a warning. The 190 time taken may be tuned using the environment variables 191 Q_DBUS_BLOCKING_CALL_MAIN_THREAD_WARNING_MS and 192 Q_DBUS_BLOCKING_CALL_OTHER_THREAD_WARNING_MS. The value represents (in 193 milliseconds) how long before a blocking call is warned about. A value 194 below zero disables the warning, a value of zero will warn about all 195 blocking calls. 196 197QtGui 198----- 199 200 - Added QPixelFormat class. 201 - Added QOpenGLWidget class. 202 - Added QOpenGLWindow class. 203 - Added QRasterWindow class. 204 - QOpenGLContext is now able to adopt existing native contexts. 205 - [QTBUG-38168] QtGui's OpenGL headers are now automatically including the 206 highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds. 207 - [QTBUG-36483] Dynamic OpenGL implementation loading is now supported on 208 Windows. This requires Qt to be configured with -opengl dynamic. 209 - [QTBUG-39583] Keymaps are now changeable at runtime when using eglfs. 210 - [QTBUG-40841] environment variable QT_DBL_CLICK_DIST customizes the 211 amount of movement allowed when detecting a double click. 212 - [QTBUG-37552] The eglfs mouse cursor properly resets the array buffer 213 from now on to avoid rendering issues. 214 - [QTBUG-40093] QWindow::close() is changed to send a QCloseEvent which 215 must be accepted before destroy() will be called. 216 217 - Clipboard: 218 * [QTBUG-41852] Fixed a memory leak in setMimeData() when the platform 219 plugin did not support the requested mode. 220 221 - Painting: 222 *[QTBUG-41413] Fixed some very rare cases of mismatched raster modes 223 in QPainter. 224 225 - QEvent: 226 * [QTBUG-38858] The debug output for events has been significantly 227 improved. 228 229 - QFont: 230 * [QTBUG-22814][QTBUG-22946] QFont now serializes its data properly, 231 without any data loss. 232 233 - QGuiApplication: 234 * Add support for -icon command line argument on X11, add -qwindowicon 235 on all platforms. 236 * Added QGuiApplication::screenRemoved signal to inform that a screen 237 has been removed, before Qt reacts to it. 238 239 - QImage: 240 * [QTBUG-25998] Added support for 10-bit per color channel image 241 formats. 242 243 - QImageReader now automatically rotates JPEG images according to Exif orientation 244 245 - QOpenGLBuffer: 246 * [QTBUG-38168] Added QOpenGLBuffer::mapBufferRange(). 247 248 - QOpenGLFramebufferObject: 249 * Introduced an argument to QOpenGLFramebufferObject::toImage() to save 250 mirroring the result. 251 * Added support 10-bit per color channels formats as the internal 252 framebuffer format, making it possible to render in that precision. 253 254 - QOpenGLTextureCache: 255 * Added support for uploading common QImage formats directly to OpenGL, 256 if supported by the OpenGL implementation. 257 258 - QPicture: 259 * [QTBUG-20578] QPicture now serializes its data properly by also 260 accounting for QDataStream versions greater than Qt 4.5. 261 262 - Tablet support: 263 * [QTBUG-39458] Added buttons to QTabletEvent. 264 * [QTBUG-39666] Events correctly identify the tool. 265 * [QTBUG-39570][QTBUG-40469] Corrected valuator ranges across platforms. 266 * Better support for non-Wacom devices. 267 * Better manual test to verify more features. 268 269 - Text: 270 * [QTBUG-41372] Fixed regression when rendering Uchen text in WebKit 271 on Windows. 272 * Fixed use of uninitialized memory in the FreeType font engine 273 274QtNetwork 275--------- 276 277 - QNetworkAccessManager: 278 * Fixed behavior of upload QIODevice that generate data on readyRead() 279 for HTTP PUT/POST 280 281 - QSsl: 282 * QSsl::SecureProtocols now also excludes SSLv3 283 284 - QSslCertificate: 285 * Can now be used as a key in QSet/QHash. 286 287 - QSslError: 288 * Can now be used in QSet/QHash. 289 290 - QSslSocket: 291 * [QTBUG-28471] Added support for finding the version of SSL/TLS in 292 use by a connection. 293 * Added accessors for the version of OpenSSL used at build-time. This 294 will help when debugging problems caused by a mismatch with the 295 run-time version. 296 * [QTBUG-1565] Support for loading PKCS#12 bundles was added. These are 297 often used to conveniently transport keys and certificates, 298 particularly when making use of client certificates. 299 300QtPrintSupport 301-------------- 302 303 - QPrinter: 304 * [QTBUG-11332] Added duplex support for Windows and OS X. 305 306QtSql 307----- 308 309 - ibase: Fixed memory corruption due to LONG being 4 bytes in firebird. 310 311 - QSqlDriver: 312 * Add support for determining DBMS type from SQL driver using 313 QSqlDriver::dbmsType() 314 315QtTest 316------ 317 318 - Tests now output build information. 319 320QtWidgets 321--------- 322 323 - All widgets with a setReadOnly method now send a ReadOnlyChange event 324 (e.g., for app-specific palette changes) 325 - [QTBUG-32888] Accessibility for widgets is now included in the widget 326 library instead of being a separate plugin. For static builds this means 327 that libqtaccessiblewidgets is no longer required. 328 - [QTBUG-39814] Accessors for Qt::MouseEventSource and Qt::MouseEventFlags 329 are now available in QGraphicsSceneMouseEvent. 330 331 - QComboBox: 332 * [QTBUG-33537] Fixed positions of items when QComboBox is set as 333 editable in Fusion style. 334 * [QTBUG-33537] Fixed updating appearance of popup menu when changing 335 the editable state of the combo box. 336 337 - QDialog / Windows: 338 * [QTBUG-2027] Dialogs can now be menuless. 339 340 - QGraphicsScene: 341 * Added the minimumRenderSize property which can be used to speed up 342 rendering by not painting items smaller than a give size. 343 * The removal of items when using the linear index is now more 344 efficient. 345 346 - QLayout: 347 * [QTBUG-37673] Widgets and dialogs containing layouts with 348 heightForWidth (such as a label with word wrap) will no longer get a 349 minimum size of 0x0. 350 351 - QLineEdit: 352 * [QTBUG-40287] The signal textEdited() is now emitted when the user 353 clicks the clear button created by setClearButtonEnabled() as well. 354 355 - QMainWindow: 356 * [QTBUG-40410] Dock widgets will now be resized properly when the 357 central widget has a fixed size. 358 359 - QPlainTextEdit: 360 * [QTBUG-36415] Fixed a crash when using full width selections and 361 issuing a complex undo command chain which removes and inserts an 362 empty block in one go. 363 * [QTBUG-40347] Fixed a possible divide by zero crash when font metrics 364 were missing for the font. 365 366 - QTabBar: 367 * Added changeCurrentOnDrag property. 368 369 - QTableView / QTableWidget: 370 * [QTBUG-29239] currentIndex() now reflects the top left cell when in a 371 span. 372 373 - QTreeView: 374 * Indentation is now style-dependent by default. 375 * Added resetIndentation(). 376 377 - Styles: 378 * Allow overriding standardIcon() in a proxy style 379 380**************************************************************************** 381* Platform Specific Changes * 382**************************************************************************** 383 384- Several QPA logging categories are added under qt.qpa to enable logging 385 of various platform-specific details. qt.qpa.input is now used 386 consistently. 387 388Android 389------- 390 391 - [QTBUG-36019] Enable using native style also when Ministro deployment 392 mechanism is not in use. 393 - [QTBUG-29069] Release all windows when the application is suspended. 394 - Added Gradle support to build the APK. 395 - [QTBUG-39688] Back key no longer kills the application when no window is 396 visible. 397 - [QTBUG-41365] Default open-source license for Qt for Android is now 398 LGPLv3. For compatibility with the LGPLv2.1 license, add 399 "-no-android-style-assets" to your configuration. 400 - [QTBUG-32399] Input panels are now hidden when focus changes to an object 401 that does not accept input. 402 - [QTBUG-41854] Added support for QClipboard::clear() 403 - [QTBUG-41852] Fixed memory leak in QClipboard::setMimeData() 404 - [QTBUG-41817] QClipboard::mimeData() now returns an empty object instead 405 of null pointer from QClipboard when clipboard is empty for consistency 406 with other platforms. 407 - New bearer plugin. It's now possible to get more information about the 408 different network configurations on Android. 409 - Important Behavior Changes: 410 * [QTBUG-36274] The main event loop is now stopped when the app is 411 suspended 412 413iOS 414--- 415 416 - [QTBUG-39097] Accessibility was added to the iOS platform port. This 417 enables Qt applications to be read by VoiceOver on iOS devices. 418 - [QTBUG-42276] Fixed path to QStandardPaths::DataLocation. Until now, 419 DataLocation was pointing to the Document directory. With this patch, 420 it will return the more accurate Library/Application Support. 421 Applications making use of DataLocation should move these data to the 422 new location. This can be done using the path provided by 423 DocumentLocation as the source path. 424 - [QTBUG-41458] screen resolution update after device rotation now works. 425 - [QTBUG-42345] fixed crash on startup on iOS 7.1 426 - iOS is now using fat builds with both 32-, and 64-bit support. 427 - New launch screen added to support iPhone6/6+. 428 - QtQuick Controls now support native text selection and popup menus. 429 - Virtual keyboard visibility is now automatically managed by the platform plugin. 430 - Default theme fonts now uses Dynamic Type, which is based on user system settings. 431 432Linux/XCB 433--------- 434 435 - [QTBUG-35832] Fixed transparency of tray icons in cases where there 436 is no alpha channel or system tray visual. 437 - environment variables QT_XCB_DEBUG_XINPUT and 438 QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and replaced with logging 439 categories qt.qpa.input and qt.qpa.input.devices respectively 440 - [QTBUG-39572] Wacom touch devices are now working correctly. 441 - [QTBUG-42249] A path to a font file can now contain non-Latin characters. 442 443OS X 444---- 445 446 - OS X 10.6 is no longer supported. 447 - OS X 10.10 is now supported. 448 - QMacStyle has been updated with better OS 10.10 support. 449 - The Qt binary packages are now configured with C++11 enabled. 450 - [QTBUG-41208] Fixed detection of writing system support in fonts for 451 some scripts such as Mkhedruli. 452 - Fixed menu item shortcuts without keyboard modifiers. 453 - [QTBUG-31301] Drag-and-drop QMimeData requests are now delayed until 454 drop time. 455 - [QTBUG-10899] Added support for ApplicationState 456 capability. Application can now detect when an application states 457 have changed as well when the dock icon has been clicked. 458 459 - Fonts: 460 * [QTBUG-40986][QTBUG-40549] Fixed missing glyph box shown in place of 461 some uncommon Unicode code points. 462 463Windows 464------- 465 466 - [QTBUG-38259] Changed configure defaults so that Qt5Core does not link 467 against ICU libraries anymore. Pass '-icu' to enable it. 468 - [QTBUG-35432][QTBUG-23687] Command line parsing on Windows now uses 469 the WinAPI function CommandLineToArgvW() to exactly match the quoting 470 behavior used by the majority of applications. 471 472 - Fonts: 473 * [QTBUG-41783] Fix off-by-one in font descent when using the 474 DirectWrite font engine. 475 * [QTBUG-39961] Set default fallback font to MS Shell Dlg 2 instead of 476 Arial. 477 478**************************************************************************** 479* Compiler Specific Changes * 480**************************************************************************** 481 482 - Release builds with Microsoft Visual Studio 2013 now enable the 483 standard-conforming C and C++ strict string behavior. This option will 484 be enabled in all builds with future Visual Studio versions. 485 Non-conforming code should be fixed for maximum portability and 486 correctness. See http://msdn.microsoft.com/en-us/library/dn449508.aspx 487 for more information. 488 489**************************************************************************** 490* Tools * 491**************************************************************************** 492 493 - [QTBUG-30900] The obsolete findtr script was removed. 494 495configure & build system 496------------------------ 497 498 - The -process/-fully-process/-dont-process configure options have been 499 removed due to being unnecessary and counterproductive. 500 - [QTBUG-36955] The -vcproj configure option was removed. Use "qmake -r -tp vc" 501 _after_ building Qt in case you want to use Visual Studio to work on Qt. 502 - [QTBUG-37961] Qt plugins contain version info again. 503 - [QTBUG-39216] Fixed more cases where the Qt build would pick up headers 504 from a pre-existing Qt installation. 505 - [QTBUG-41267] Fixed parallelized (jom) -debug-and-release builds. 506 507moc 508--- 509 510 - Fixed "zero as null pointer constant" warnings in moc's generated 511 code. 512 513qmake 514----- 515 516 - [QTBUG-21910][Unix] Added 'make dist' target for SUBDIRS projects. 517 - [QTBUG-32895][iOS] Fixed structure of bundles. They can be signed now. 518 - [QTBUG-26782][VS] Fixed handling of TARGET_EXT. 519 - [QTBUG-30712][VS] Fixed handling of QMAKE_LIBFLAGS. 520 - [QTBUG-30373][VS] Using different RESOURCES in different build variants 521 no longer produces invalid vcxproj files. 522 - [QTBUG-37520][VS] Made it possible to suppress qmake warnings about 523 unknown compiler options. CONFIG+=suppress_vcproj_warnings. 524 - [QTBUG-37363][MSVC2012+] embed_manifest_exe is now properly supported. 525 - [QTBUG-41504][MSVC2012+] Building DLLs targeting Windows XP is now 526 supported. As a side effect, Windows CE makespecs must not add /ENTRY: to 527 QMAKE_LFLAGS_CONSOLE any more. The flag is hard-coded in console.prf now. 528 - [QTBUG-35318][Xcode] Fixed QMAKE_BUNDLE_DATA's path resolution. 529 - [QTBUG-39527] Fixed qtCompile() when used with jom -jN. 530 - QMAKE_EXTRA_COMPILERS' commands and depend_command are no longer mangled. 531 Use $$shell_path() and $$shell_quote() to prepare the commands correctly. 532 - Added link-time optimization support for Clang, GCC and ICC. CONFIG+=ltgc. 533 534rcc 535--- 536 537 - rcc now supports an optional, two-pass compilation that improves build 538 times for large resource bundles. This feature can be enabled by adding 539 "CONFIG += resources_big" to your .pro file. Note that this feature may 540 interfere with builds that enable link-time code generation or other 541 optimization techniques. 542 543**************************************************************************** 544* Third-party libraries * 545**************************************************************************** 546 547 - ANGLE has been upgraded to version 2.1, bringing partial support for 548 OpenGL ES3 over Direct3D 11, numerous bug fixes, and several new vendor 549 extensions. 550 - [QTBUG-40649][QTBUG-40658][QTBUG-41031][QTBUG-41081][QTBUG-41308][QTBUG- 551 41563] ANGLE updated to 2.1~f8602ad91e4f 552 - [QTBUG-41031] The ANGLE D3D11 renderer is now enabled by default. Systems 553 which cannot use the new renderer will automatically fall back to the D3D9 554 renderer at runtime. 555