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