1Qt 5.14 introduces many new features and improvements as well as bugfixes 2over the 5.13.x series. For more details, refer to the online documentation 3included in this distribution. The documentation is also available online: 4 5https://doc.qt.io/qt-5/index.html 6 7The Qt version 5.14 series is binary compatible with the 5.13.x series. 8Applications compiled for 5.13 will continue to run with 5.14. 9 10Some of the changes listed in this file include issue tracking numbers 11corresponding to tasks in the Qt Bug Tracker: 12 13https://bugreports.qt.io/ 14 15Each of these identifiers can be entered in the bug tracker to obtain more 16information about a particular change. 17 18**************************************************************************** 19* Important Behavioral Change * 20**************************************************************************** 21 22 - [QTBUG-47644] WrapWord now correctly prefers line breaks between words 23 in Korean text. WrapAnywhere can still be used to get breaks between 24 syllables instead. 25 26**************************************************************************** 27* Potentially Source-Incompatible Changes * 28**************************************************************************** 29 30 - qstringlist.h no longer includes qregexp.h. 31 - Prefixing Q_NAMESPACE with an export macro may no longer work. Use the 32 new Q_NAMESPACE_EXPORT macro for that use case. 33 34**************************************************************************** 35* QtCore * 36**************************************************************************** 37 38 - Added support of deduction guides for QPair 39 - Added new Qt::SplitBehavior, for use as eventual replacement for 40 QString::SplitBehavior. 41 - Added the new Q_NAMESPACE_EXPORT macro. It can be used just like 42 Q_NAMESPACE to add meta-object information to a namespace; however it 43 also supports exporting of such information from shared libraries. 44 - [QTBUG-15234] Qt installations on the host system can now be relocated, 45 i.e. moved to other directories. 46 47 - JSON: 48 * Added overloads of functions taking key strings as QStringView; in 49 QJsonObject, QJsonValue and QJsonDocument. 50 51 - QAtomicInteger: 52 * Added loadRelaxed() and storeRelaxed(), to be used as replacements of 53 load() / store(). 54 55 - QAtomicPointer: 56 * Added loadRelaxed() and storeRelaxed(), to be used as replacements of 57 load() / store(). 58 59 - QBasicTimer: 60 * QBasicTimer is now a move-only class. Copying is now deprecated and 61 will be removed in Qt 6. 62 * Added swap() member and free function. 63 64 - QByteArray::operator[]: 65 * Detach immediately, instead of deferring until modification via 66 the returned QByteRef. 67 * Deprecate reliance on its implicit resizing behavior. Support for 68 writing past the end of QByteArray shall be removed in a future 69 version of Qt. 70 71 - QCalendar: 72 * Added QCalendar to support diverse calendars, supported by 73 implementing QCalendarBackend. 74 * Added support for Julian and Milankovic calendars. These are enabled 75 by default, except in bootstrap builds. 76 * Added support for the Jalali (Persian or Solar Hijri) calendar, 77 controlled by feature jalalicalendar. 78 * Added support for the Islamic Civil calendar, controlled by feature 79 islamiccivilcalendar, with locale data that can be shared with other 80 implementations, controlled by feature hijricalendar. 81 82 - QChar: 83 * Added FormFeed (FF) special character. 84 85 - QCollator: 86 * Added support for QStringView. 87 * The default QCollator now uses the system's collation locale, rather 88 than the system locale itself. 89 90 - QDataStream: 91 * Enumerations can now be serialized through QDataStream without the 92 need of manually defining streaming operators. 93 94 - QDate: 95 * [QTBUG-64485] Added startOfDay() and endOfDay() methods to provide a 96 QDateTime at the start and end of a given date, taking account of any 97 time skipped by transitions, e.g. a DST spring-forward, which can lead 98 to a day starting at 01:00 or ending just before 23:00. 99 * Allow choice of calendar in various operations, with Gregorian 100 remaining the default. 101 102 - QDateTime: 103 * Invalid datetimes are now treated as equal and less than all valid 104 ones. They could previously be found equal to valid datetimes. 105 106 - QDir: 107 * Remove Windows specific long path markers when handling file paths 108 with native separators. 109 110 - QEasingCurve: 111 * QEasingCurve now properly streams all the data needed to QDataStream. 112 113 - QFileInfo: 114 * [QTBUG-75869] Introduced QFileInfo::isJunction() to detect NTFS Junctions 115 on Windows. 116 117 - QHash: 118 * Added range constructor. 119 120 - QJsonObject: 121 * Added insert(), remove(), and take() overloads taking QLatin1String. 122 123 - QLatin1Char: 124 * Comparison against char now works even in QT_NO_CAST_FROM_ASCII 125 builds. 126 127 - QLatin1Literal: 128 * The undocumented QLatin1Literal type alias for QLatin1String is now 129 deprecated. Use QLatin1String instead. 130 131 - QLatin1String: 132 * Added indexOf(). 133 * Added contains(). 134 * Added lastIndexOf(). 135 136 - QLineF: 137 * added QLineF::intersects() as a replacement for QLineF::intersect() 138 139 - QLinkedList: 140 * Added range constructor. 141 142 - QList: 143 * Added range constructor. 144 145 - QLocale: 146 * The system locale now knows what to use for collation, 147 QLocale::system().collation(). 148 * The NaN obtained when reading "nan" as a floating-point value is now 149 quiet rather than signaling. 150 * The system locale's UI languages list now includes, as for that of an 151 ordinary locale, the results of adding likely sub-tags from each 152 locale name, and of removing some, where this doesn't change which 153 locale is specified. This gives searches for translation files a 154 better chance of finding a suitable file. 155 156 - QMetaObject: 157 * [QTBUG-38876] Some internal members of the QMetaObject class have 158 changed types. Those members are not public API and thus should not 159 cause source incompatibilities. 160 161 - QMultiHash: 162 * Added range constructor. 163 164 - QMutex: 165 * Added QRecursiveMutex as a replacement of QMutex(QMutex::Recursive). 166 167 - QPoint/QPointF: 168 * Added transposed(). 169 170 - QPointer: 171 * Added a free swap function. 172 173 - QSet: 174 * Added range constructor. 175 176 - QSharedPointer: 177 * Overloads of qSharedPointerObjectCast have been added to work on 178 std::shared_ptr. 179 * The swap overload for QSharedPointer in the std namespace has been 180 removed; a new overload has been added in the Qt namespace. 181 182 - QSize/QSizeF: 183 * Added grownBy(QMargin(F))/shrunkBy(QMargin(F)). 184 185 - QString: 186 * The behavior of operator[] to allow implicit resizing of the string 187 has been deprecated, and will be removed in a future version of Qt. 188 * QString::operator[] detaches immediately. Previously, the detach was 189 delayed until a modification was made to the string through the 190 returned QCharRef. 191 * QString::arg(QString, ..., QString) can now be called with more than 192 nine arguments, as well as with QStringViews. 193 194 - QString/QStringRef: 195 * The split functions now optionally take Qt::SplitBehavior. 196 197 - QStringList: 198 * Added range constructor. 199 * Added QStringView overloads of join(), filter(), and 200 replaceInStrings(). 201 202 - QStringView: 203 * Added indexOf(). 204 * Added contains(). 205 * Added lastIndexOf(). 206 * Deprecated the (undocumented) QStringViewLiteral macro. Just use u"" 207 or QStringView(u"") instead. 208 209 - QStringView/QLatin1String: 210 * Added arg(), taking arbitrarily many strings. 211 212 - QTextStream: 213 * The NaN obtained when reading "nan" as a floating-point value is now 214 quiet rather than signaling. 215 216 - QTimeZone: 217 * [QTBUG-75565] The TZDB back-end now recognizes the contents of /etc/TZ 218 as a fall-back for $TZ (as used by uClibc). 219 220 - QVarLengthArray: 221 * Added range constructor. 222 * Added a qHash overload. 223 224 - QVariant: 225 * Fixed a bug that caused isNull() to be true after downcasting a 226 QObject* payload using convert(). 227 228 - QVector: 229 * Added range constructor. 230 231 - QWeakPointer: 232 * The data() function has been deprecated. 233 * A swap overload has been added. 234 235 - QtGlobal: 236 * Add new macros QT_DEPRECATED_VERSION and QT_DEPRECATED_VERSION_X to 237 conditionally display deprecation warnings 238 * Added qExchange(), a drop-in for C++14's std::exchange() 239 240 - Windows: 241 * QSysInfo::prettyProductName() now returns a version including the 242 Windows 10 release id or Windows 7 build number respectively, 243 resembling the version string displayed by the winver tool. 244 245**************************************************************************** 246* QtDBus * 247**************************************************************************** 248 249 - QDBusAbstractInterface: 250 * The call() and asyncCall() methods now accept more than eight QVariant 251 arguments. 252 253 - QDBusObjectPath: 254 * Added explicit cast operator to QVariant. 255 256**************************************************************************** 257* QtGui * 258**************************************************************************** 259 260 - QColor: 261 * Added QColorConstants, a namespace containing constexpr QColor 262 instances. 263 264 - A QColorSpace class has been added, and color spaces are now parsed from 265 PNG and JPEG images. No automatic color space conversion is done 266 however, and applications must request it. 267 - Added support for filtering Vulkan debug messages in QVulkanInstance. 268 This is especially useful for processing or suppressing messages from 269 the validation layers. 270 - Obsolete constructors and accessors in QWheelEvent now have proper 271 deprecation macros, and are no longer in use in any Qt modules. 272 What is left is intended to be compatible with planned changes in Qt 6. 273 274 - QFont: 275 * [QTBUG-77908] Fixed kerning error with certain fonts. 276 * [QTBUG-76239] Fixed an issue where application fonts would be parsed 277 multiple times, causing some unnecessary overhead when during 278 application startup. 279 * [QTBUG-46322] Resolving a font that just has a family set with 280 families set will prepend the family to the families so that it is 281 still the first preference for the font. 282 283 - QImage: 284 * [QTBUG-42540], [QTBUG-68787] Loading of image files having a file 285 name suffix for a different image file type has been 286 fixed. QImageReader will now ask the suffix format handler to 287 confirm the file contents (canRead()), and fall back to normal 288 file content recognition on failure. This implies a slight 289 behavior change in QImageReader::loopCount(), ::imageCount() and 290 ::nextImageDelay(): For an unreadable file with a recognized 291 suffix, they would earlier return 0, while they now will 292 return -1, i.e. error, as per the documentation. 293 294 - QPainter: 295 * HighQualityAntialiasing and NonCosmeticDefaultPen are marked as 296 deprecated and don't have an effect anymore 297 298 - QTextDocument: 299 * [QTBUG-36152] CSS styling of table cell borders (styling <td> and <th> 300 elements) is now supported during HTML import and export, including 301 border-color, border-width and border-style. Setting the table's 302 border-width to a value >= 1 and enabling border-collapse will now draw 303 a simple, clean table grid (1px) with an outer border of the specified 304 width and color. A manual test was added, which allows editing HTML 305 with live preview. 306 * [QTBUG-43589] Fixed incorrect rounding of widths of variable-width 307 columns in tables, to avoid border drawing artifacts. 308 * [QTBUG-78318] QTextFrameFormat margins, padding and borders are now 309 scaled to device coordinates, and thus correctly sized on high-dpi 310 displays and printers. 311 * Markdown (CommonMark or GitHub dialect) is now a supported format for 312 reading into and writing from QTextDocument, via the setMarkdown() and 313 toMarkdown() functions. We do not guarantee that every markdown 314 document can be re-written exactly as it was read; but that does work 315 in many cases, and it's OK to report bugs about cases that don't work. 316 317 - Touch: 318 * [QTBUG-77142] When a stationary touchpoint contains some "interesting" 319 property change (pressure or velocity, so far), it is delivered normally. 320 321**************************************************************************** 322* QtNetwork * 323**************************************************************************** 324 325 - QAuthenticator: 326 * [QTBUG-4117] Add support for SPNEGO/Negotiate 327 328 - QHostInfo: 329 * Added move contructor. 330 331 - QNetworkAccessManager: 332 * [QTBUG-69477] Don't fail when FTP does not implement the HELP command. 333 * Added setAutoDeleteReplies to QNetworkAccessManager to enable the 334 AutoDeleteReplyOnFinishAttribute attribute for all QNetworkRequests 335 that are passed to QNetworkAccessManager. 336 337 - QNetworkRequest: 338 * Added the AutoDeleteReplyOnFinishAttribute attribute to 339 QNetworkRequest, which makes QNetworkAccessManager delete the 340 QNetworkReply after it has emitted the "finished" signal. 341 * Add an ability to configure HTTP/2 protocol 342 343 - QSslKey: 344 * Key data is cleared as soon as possible when move-assigning. 345 346 - QSslSocket: 347 * [QTBUG-72016] Added runtime validation of the SSL private key when it 348 is loaded through a file path. 349 350**************************************************************************** 351* QtSql * 352**************************************************************************** 353 354 - QPSQL: 355 * [QTBUG-79033][QTBUG-79064] added support for PostgreSQL 12 356 357 - QSqlite: 358 * Updated to v3.30.1 359 360 - QSqlite2: 361 * Marked QSQLITE2 plugin as obsolete - it will be removed with Qt6 362 together with the QTDS plugin 363 364**************************************************************************** 365* QtTestLib * 366**************************************************************************** 367 368 - Comparison of QImage, QPixmap now checks for the device pixel ratio. 369 - It is now possible to perform static initialization before QApplication 370 instantiation by implementing a initMain() function in the test class. 371 372**************************************************************************** 373* QtWidgets * 374**************************************************************************** 375 376 - QActionGroup: 377 * Added new exclusionPolicy property. Set it to ExclusiveOptional to 378 allow unchecking the active checkable action in an exclusive group. 379 380 - QCalendarWidget: 381 * Allow choice of calendar, with Gregorian remaining the default. 382 383 - QComboBox: 384 * Two new signals textHighlighted() and textActivated() were added to 385 replace highlighted()/activated() QString overloads. 386 387 - QDateTimeEdit: 388 * Allow choice of calendar, with Gregorian remaining the default. 389 390 - QFileDialog: 391 * The widgets-based dialog now remembers the selected files when 392 navigating the history. 393 394 - QFormLayout: 395 * Honor the vertical expanding state of a widget inside a QFormLayout. 396 397 - QGraphicsWidget: 398 * Added QMarginsF overloads of setContentsMargins() and 399 setWindowFrameMargins(). 400 401 - QGroupBox: 402 * [QTBUG-259389 Always disable children of a checkable, unchecked group 403 box before showing. 404 405 - QLabel: 406 * Markdown is now a supported textFormat for QLabel. 407 408 - QLayout: 409 * Prevent clipping of group box titles on macOS (and similar styles that 410 draw into layout margins) 411 412 - QLineEdit: 413 * Behavior change: now the editingFinished signal is emitted only once 414 after the line edit content was edited. 415 * The getTextMargins() member function has been deprecated in favor of 416 textMargins(). 417 418 - QStyle: 419 * Style sheets now only use the part of the stylesheet font that it 420 knows about. The remaining will be resolved/inherited from the 421 context. 422 423 - QTextBrowser: 424 * Markdown is now a supported format. QTextBrowser::setSource() detects 425 the common file extensions (.md, .mkd and .markdown). In case it 426 cannot be detected that way, setSource() now takes an optional 427 ResourceType enum argument so that the type can be overridden. 428 QTextBrowser inherits all the QTextEdit features: if readOnly is set 429 to false, the user can perform the editing operations that QTextEdit 430 allows. If readOnly is set to true (the default), the user can click 431 Markdown hyperlinks to emit the anchorClicked() signal, as with HTML. 432 433 - QTextEdit: 434 * [QTBUG-75931] Added support for copy-pasting foreground brushes with 435 textures within same document. 436 * Markdown (CommonMark or GitHub dialect) is now a supported format, 437 via the markdown property. GitHub dialect is the default, and supports 438 all features such as hyperlinks, images, tables, lists, checklists, etc. 439 * If the text was loaded from a Markdown document that contains checkboxes, 440 the user can click on them to toggle the states. The cursor changes to 441 PointingHandCursor when the mouse is hovering over a checkbox. 442 443 - QTreeView: 444 * Don't emit clicked signal after a doubleClicked signal. 445 446 - QWidget: 447 * The getContentsMargins() member function has been deprecated in favor 448 of contentsMargins(). 449 450**************************************************************************** 451* Platform Specific Changes * 452**************************************************************************** 453 454 - Android 455 * Fixed an issue where an application installation would be irrecoverably 456 broken if power loss or a crash occurred during its first initialization 457 run. 458 * Make it easy to run Qt tests on Android. "$ make check" is all that's 459 needed to run a test on an Android device. 460 * Remove ant support from androiddeployqt 461 * Introduce "make apk" target, an easy way to create an apk. 462 * Android depends on NDK r20+ 463 * Android multi arch build in one go, needed to support the new .aab 464 packaging format. 465 * -android-abis configure script parameter useful to compile Qt only for a 466 selected Android ABIs. 467 * Instead of bundling QML resources in assets and extracting them on first 468 start, Qt now creates an .rcc file and register it before invoking the 469 main function. 470 * Fixed regression that made it impossible for an application to use the 471 tap-and-hold gesture. 472 473 - Linux: 474 * Added a device spec for Raspberry Pi 4 (32-bit, V3D) 475 * Added a device spec for 64-bit i.MX8 systems (Vivante graphics stack) 476 477 - MinGW: 478 * [QTBUG-4155] Added a suffix to debug mode pkgconfig files. 479 * MinGW does not built with -debug-and-release mode anymore. 480 Instead, the binaries are built with -release -force-debug-info 481 -separate-debug-info. 482 483 - macOS: 484 * The drawableSize of Metal layers is no longer updated automatically on 485 window resize or screen change. Update the size manually in response to 486 resizeEvent(), or at the start of each frame, as needed. 487 488 - Mir: 489 * The Mir platform plugin has been removed: use the Wayland plugin when 490 connecting to a Mir display server. 491 492 - Windows: 493 * It is now possible to enable RTL mode by passing the option -platform 494 windows:reverse. 495 * [QTBUG-74748] Fixed a bug where it would be impossible to 496 request different faces of a font family after a specific type face 497 has been in use. 498 499**************************************************************************** 500* Third-Party Code * 501**************************************************************************** 502 - Upgraded bundled Freetype version to 2.10.1. 503 - Build sqlite without SQLITE_OMIT_LOAD_EXTENSION 504 - Qt Gui: Added md4c markdown parser to src/3rdparty/md4c (MIT licensed). 505 - [QTBUG-79418] Updated double-conversion code to upstream version 3.1.5. 506 - [QTBUG-79420] libjpeg-turbo was updated to version 2.0.3 507 - [QTBUG-79418] Updated DNS public suffix list 508 509**************************************************************************** 510* Tools * 511**************************************************************************** 512 513 - rcc: 514 * Added -d option to generate a dependency file. 515 * Added support for Python as output format. 516 517**************************************************************************** 518* configure * 519**************************************************************************** 520 521 - Added the configure option -qtlibinfix-plugins to rename plugins 522 according to QT_LIBINFIX. This option is off by default. 523 524**************************************************************************** 525* CMake * 526**************************************************************************** 527 528 - [QTBUG-38913][QTBUG-76562] Added ability to auto-import non-qml plugins 529 on CMake builds 530 531**************************************************************************** 532* qmake * 533**************************************************************************** 534 535 - Installation targets do not ignore the exit code of QINSTALL and 536 QINSTALL_PROGRAM anymore. 537 - Introduced the variables LEX_DIR and YACC_DIR which determine the 538 location of lex/yacc output. Fixed parallel execution of lex/yacc for 539 debug_and_release builds. 540 - The syntax 'LIBS += -frameworkFoo', or 'LIBS += "-framework Foo"' is no 541 longer supported. Use the canonical 'LIBS += -framework Foo' instead. 542 - Fixed precompiled headers for the Clang compiler. 543 544 - Android: 545 * Remove gcc-style PCH directives from the android-clang mkspec. 546