1Some of the changes listed in this file include issue tracking numbers
2corresponding to tasks in the Qt Bug Tracker:
3
4  http://bugreports.qt-project.org/
5
6Each of these identifiers can be entered in the bug tracker to obtain more
7information about a particular change.
8
9
10****************************************************************************
11*                       Source incompatible changes                        *
12****************************************************************************
13
14- The Qt 3 support module and all related code was removed.
15
16- QAtomicInt's and QAtomicPointer's non-atomic convenience methods
17  (i.e., operator=, operator int / operator T*, operator!, operator==,
18  operator!= and operator->) have been removed as they did implicit
19  loads and stores of unspecified memory ordering. Code dealing with
20  is expected to use load(), loadAquire(), store() and storeRelease()
21  as necessary instead.
22
23- QObject
24  * The signatures of the connectNotify() and disconnectNotify() functions
25    have changed. The functions now get passed a QMetaMethod that identifies
26    the signal, rather than a const char *.
27
28- QSslCertificate::subjectInfo() and QSslCertificate::issuerInfo() now
29  return a QStringList instead of a QString
30
31- QSslCertificate::isValid() has been deprecated. Originally it only checked
32  the certificate dates, but later checking for blacklisting was added. Now
33  there's a more specific QSslCertificate::isBlacklisted() method.
34
35- Unite clipping support has been removed from QPainter. The alternative is
36  to unite QRegion's and using the result on QPainter.
37
38- QLibrary::resolve() now returns a function pointer instead of a void
39  pointer.
40
41- QSslCertificate::alternateSubjectNames() is deprecated (but can be enabled
42  via QT_DISABLE_DEPRECATED_BEFORE), use
43  QSslCertificate::subjectAlternativeNames() instead.
44
45- QLibraryInfo::buildKey() has been removed. Likewise, the QT_BUILD_KEY
46  preprocessor #define has also been removed. The build-key is obsolete
47  and is no longer necessary.
48
49- QCoreApplication::translate() will no longer return the source text when
50  the translation is empty. Use lrelease -removeidentical for optimization.
51
52- QTranslator subclasses need to adjust the signature of the virtual method
53  translate() in order to add the "int n = -1" argument.
54
55- QString and QByteArray constructors that take a size argument will now treat
56  negative sizes to indicate nul-terminated strings (a nul-terminated array of
57  QChar, in the case of QString). In Qt 4, negative sizes were ignored and
58  result in empty QString and QByteArray, respectively. The size argument to
59  those constructors now has a default value of -1, thus replacing the separate
60  constructors that did the same.
61
62- Qt::escape() is deprecated (but can be enabled via
63  QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead.
64
65- QBool is gone. QString::contains, QByteArray::contains, and QList::contains
66  used to return an internal QBool class so that the Qt3 code
67  "if (a.contains() == 2)" wouldn't compile anymore. Such code cannot exist
68  in Qt4, so these methods return a bool now. If your code used the undocumented
69  QBool, simply replace it with bool.
70
71- The old macros TRUE and FALSE have been removed, use true and false instead.
72
73- qIsDetached<> has been removed without replacement.
74
75- The return type of QFlags<Enum>::operator int() now matches the Enum's underlying
76  type in signedness instead of always being 'int'. This was done in order to allow
77  QFlags over enums whose underlying type is unsigned (Qt::MouseButton is one such
78  enum).
79
80- QMetaType:
81  * QMetaType::construct() has been renamed to QMetaType::create().
82  * QMetaType::unregisterType() has been removed.
83  * QMetaType now records if the type argument inherits QObject. This
84    can be used in scripting APIs, so that custom QObject subclasses
85    are treated as QObject pointers. In QtScript for example, this can
86    mean that QScriptValue.isQObject can be true where it was false before.
87  * QMetaType::QWidgetStar has been removed. Use qMetaTypeId<QWidget*>()
88    or QVariant::canConvert<QWidget*>() as appropriate.
89
90- QMetaMethod:
91  * QMetaMethod::signature() has been renamed to QMetaMethod::methodSignature(),
92    and the return type has been changed to QByteArray. This was done to be able
93    to generate the signature string on demand, rather than always storing it in
94    the meta-data.
95  * QMetaMethod::typeName() no longer returns an empty string when the return
96    type is void; it returns "void". The recommended way of checking whether a
97    method returns void is to compare the return value of QMetaMethod::returnType()
98    to QMetaType::Void.
99
100- QVariant:
101  * Inconsistent constructor taking Qt::GlobalColor and producing QVariant(QColor)
102    instance was removed. Code constructing such variants can be migrated by
103    explicitly calling QColor constructor. For example from "QVariant(Qt::red)"
104    to "QVariant(QColor(Qt::red))"
105  * Similarly, implicit creation of QVariants from enum values Qt::BrushStyle,
106    Qt::PenStyle, and Qt::CursorShape have been removed. Create objects explicitly
107    or use static_cast<int>(Qt::SolidLine) to create a QVariant of type int with
108    the same value as the enum.
109
110- QLocale:
111  * The historical language and country names were updated to their modern values,
112    some deprecated names were dropped or mapped to their modern alternatives.
113
114- QTestLib:
115  * The plain-text, xml and lightxml test output formats have been changed to
116    show a test result for every row of test data in data-driven tests.  In
117    Qt4, only fails and skips were shown for individual data rows and passes
118    were not shown for individual data rows, preventing accurate calculation
119    of test run rates and pass rates.
120  * The QTRY_VERIFY and QTRY_COMPARE macros have been moved into QTestLib.
121    These macros formerly lived in tests/shared/util.h but are now provided
122    by including the <QtTest/QtTest> header. In addition,
123    QTRY_VERIFY_WITH_TIMEOUT and QTRY_COMPARE_WITH_TIMEOUT are provided,
124    allowing for specifying custom timeout values.
125  * The QTEST_NOOP_MAIN macro has been removed from the API.  If a test is
126    known at compile-time to be inapplicable for a particular build it should
127    be omitted via .pro file logic, or the test should call QSKIP in the
128    initTestCase() method to skip the entire test and report a meaningful
129    explanation in the test log.
130  * The DEPENDS_ON macro has been removed from the API.  This macro did nothing
131    and misled some users to believe that they could make test functions depend
132    on each other or impose an execution order on test functions.
133  * The QTest::qt_snprintf function has been removed from the API.  This was an
134    internal testlib function that was exposed in the public API due to its use
135    in a public macro.  Any calls to this function should be replaced by a call
136    to qsnprintf(), which comes from the <QtCore/QByteArray> header.
137  * The QTest::pixmapsAreEqual() function has been removed from the API.
138    Comparison of QPixmap objects should be done using QCOMPARE, which provides
139    more informative output in the event of a failure.
140  * The QSKIP macro no longer has the "mode" parameter, which caused problems
141    for calculating test metrics, as the SkipAll mode hid information about
142    what test data was skipped.  Calling QSKIP in a test function now behaves
143    like SkipSingle -- skipping a non-data-driven test function or skipping
144    only the current data row of a data-driven test function.  Every skipped
145    data row is now reported in the test log.
146  * The qCompare() function template was both overloaded and specialised, which
147    made it almost impossible to specialise the correct primary template and
148    could lead to indecipherable error messages or surprising overload resolution
149    (such as going via qCompare(QFlags<void*>,int) to satisfy a request for
150    qCompare<void*>()). Now, specialisation has been replaced by overloading.
151    As a consquence, code such as qCompare<QString>(l, r) will no longer use the
152    QString-specific implementation and may fail to compile. We recommend you
153    replace specialisations with overloading, too. Also, don't pass explicit
154    template arguments to qCompare (e.g. qCompare<QString>(l, r)), but let
155    overload resolution pick the correct one, and cast arguments in case of
156    ambiguous overloads (e.g. qCompare(QString(l), r)). The resulting code will
157    continue to work against older QtTestlib versions.
158
159- The QSsl::TlsV1 enum value was renamed to QSsl::TlsV1_0 .
160
161- QAccessible:
162  * Internal QAccessible::State enum value HasInvokeExtension removed
163- QAccessibleInterface:
164  * The "child" integer parameters have been removed. This moves the api
165    to be closer to IAccessible2.
166    This means several functions lose their integer parameter:
167    text(Text t, int child) -> text(Text t), rect(int child) -> rect()
168    setText(Text t, int child, const QString &text) -> setText(Text t, const QString &text)
169    role(int child) -> role(), state(int child) -> state()
170  * parent() and child() was added in order to do hierarchical navigation.
171  * relations() was added as a replacement to relationTo()
172  * As a consequence of the above two points, navigate() was removed.
173  * Accessible-Action related functions have been removed. QAccessibleInterface
174    subclasses are expected to implement the QAccessibleActionInterface instead.
175    These functions have been removed:
176    QAccessibleInterface::userActionCount, QAccessibleInterface::actionText,
177    QAccessibleInterface::doAction
178- QAccessibleEvent also loses the child parameter.
179    QAccessibleEvent(Type type, int child) -> QAccessibleEvent(Type type)
180    QAccessibleEvent::child() removed.
181- QAccessibleActionInterface:
182  * Refactored to be based on action names. All functions have been changed from using
183    int parameters to strings.
184
185- QSound has been moved from QtGui to QtMultimedia
186
187- QTabletEvent::QTabletEvent does not take a hiResGlobalPos argument anymore,
188  as all coordinates are floating point based now.
189
190- QTouchEvent:
191
192  * The DeviceType enum and deviceType() have been deprecated due to
193    the introduction of QTouchDevice.
194
195  * The signature of the constructor has changed. It now takes a
196    QTouchDevice pointer instead of just a DeviceType value.
197
198  * TouchPointState no longer includes TouchPointStateMask and
199    TouchPointPrimary. QTouchEvent::TouchPoint::isPrimary() has
200    been removed.
201
202  * QWidget *widget() has been removed and is replaced by QObject
203    *target() in order to avoid QWidget dependencies.
204
205  * QEvent::TouchCancel has been introduced. On systems where it makes
206    sense this event type can be used to differentiate between a
207    regular TouchEnd and abrupt touch sequence cancellations caused by
208    the compositor, for example when a system gesture gets recognized.
209
210- QMetaType
211
212  * Q_DECLARE_METATYPE(Foo*) now requires that Foo is fully defined. In
213    cases where a forward declared type should be used as a metatype,
214    Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that.
215  * Similarly, Q_DECLARE_METATYPE(QSharedPointer<Foo>), and
216    Q_DECLARE_METATYPE(QWeakPointer<Foo>) require Foo to be fully defined. Again
217    though, Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that.
218
219- QItemEditorFactory
220
221  * The signature of the createEditor and valuePropertyName methods
222    have been changed to take arguments of type int instead of QVariant::Type.
223
224- QModelIndex/QAbstractItemModel
225
226  * The integer value that can be stored in a QModelIndex is now of type
227    quintptr to match the size of the internal storage location.
228  * The createIndex() method now only provides the void* and quintptr
229    overloads, making calls with a literal 0 (createIndex(row, col, 0))
230    ambiguous. Either cast (quintptr(0)) or omit the third argument
231    (to get the void* overload).
232
233- QWindowSystemInterface:
234
235  * The signature of all handleTouchEvent() variants have changed,
236    taking a QTouchDevice* instead of just a DeviceType value.
237    Platform or generic plug-ins have to create and register at least
238    one QTouchDevice before sending the first touch event.
239
240  * The event type parameter is removed from handleTouchEvent().
241
242- The previously exported function qt_translateRawTouchEvent() has been removed.
243  Use QWindowSystemInterface::handleTouchEvent() instead.
244
245- QAbstractEventDispatcher
246
247  * The signature for the pure-virtual registerTimer() has changed. Subclasses
248  of QAbstractEventDispatcher will need to be updated to reimplement the new
249  pure-virtual 'virtual void registerTimer(int timerId, int interval,
250  Qt::TimerType timerType, QObject *object) = 0;'
251
252  * QAbstractEventDispatcher::TimerInfo is no longer a QPair<int, int>. It is
253  now a struct with 3 members: struct TimerInfo { int timerId; int interval;
254  Qt::TimerType timerType; }; Reimplementations of
255  QAbstractEventDispatcher::registeredTimers() will need to be updated to pass
256  3 arguments to the TimerInfo constructor (instead of 2).
257
258- QUuid
259
260  * Removed implicit conversion operator QUuid::operator QString(), instead
261  QUuid::toString() function should be used.
262
263- The QHttp, QHttpHeader, QHttpResponseHeader and QHttpRequestHeader classes have
264  been removed, QNetworkAccessManager should be used instead.
265
266- The QFtp and QUrlInfo classes are no longer exported, QNetworkAccessManager should be used
267  instead. These classes are available in a separate module, qtftp.
268
269- QProcess
270
271  * On Windows, QProcess::ForwardedChannels will not forward the output of GUI
272    applications anymore, if they do not create a console.
273
274- QAbstractSocket's connectToHost() and disconnectFromHost() are now virtual and
275  connectToHostImplementation() and disconnectFromHostImplementation() don't exist.
276
277- QTcpServer::incomingConnection() now takes a qintptr instead of an int.
278
279- QNetworkConfiguration::bearerName() removed, and bearerTypeName() should be used.
280
281- QDir::convertSeparators() (deprecated since Qt 4.2) has been removed. Use
282  QDir::toNativeSeparators() instead.
283
284- QIconEngineV2 was merged into QIconEngine
285  You might need to adjust your code if it used a QIconEngine.
286
287- QTextCodecPlugin has been removed since it is no longer used. All text codecs
288  are now built into QtCore.
289
290- QDir::NoDotAndDotDot is QDir::NoDot|QDir::NoDotDot therefore there is no need
291  to use or check both.
292
293- QFSFileEngine, QAbstractFileEngine, QAbstractFileEngineIterator and
294  QAbstractFileEngineHandler were removed from public API and are no longer
295  exported. They may temporarily live as private implementation details, but
296  they may be altogether dropped or otherwise changed at will in the future.
297
298- QLocale
299  * toShort(), toUShort(), toInt(), toUInt(), toLongLong() and toULongLong() no
300    longer take a parameter for base, they will only perform localised base 10
301    conversions. For converting other bases use the QString methods instead.
302
303- QSystemLocale has been removed from the public API.
304
305- QSqlQueryModel::indexInQuery() is now virtual. See note below under QtSql.
306
307- QSqlDriver::subscribeToNotification, unsubscribeFromNotification,
308  subscribedToNotifications, isIdentifierEscaped, and stripDelimiters
309  are now virtual. See note below under QtSql.
310
311- qMacVersion() has been removed. Use QSysInfo::macVersion() or
312  QSysInfo::MacintoshVersion instead.
313
314- QColorDialog::customColor() now returns a QColor value instead of QRgb.
315  QColorDialog::setCustomColor() and QColorDialog::setStandardColor() now
316  take a QColor value for their second parameter instead of QRgb.
317
318- QPageSetupDialog has had the PageSetupDialogOption enum and the api to
319  set and get the enum removed as none of the Options are used any more.
320
321- QAbstractPageSetupDialog has been removed.
322
323- QThread::terminated() has been removed, since its emission cannot be guaranteed.
324
325- QPrintEngine - Removed the PPK_SuppressSystemPrintStatus key as no longer used.
326
327- QCoreApplication::Type and QApplication::type() have been removed. These
328  Qt3 legacy application types did not match the application types
329  available in Qt5. Use for example qobject_cast instead to dynamically
330  find out the exact application type.
331
332- The following QStyle implementations have been made internal:
333  * QFusionStyle
334  * QGtkStyle
335  * QMacStyle
336  * QWindowsCEStyle
337  * QWindowsMobileStyle
338  * QWindowsStyle
339  * QWindowsVistaStyle
340  * QWindowsXPStyle
341  Instead of creating instances or inheriting these classes directly, use:
342  * QStyleFactory for creating instances of specific styles
343  * QProxyStyle for customizing existing style implementations
344  * QCommonStyle as a base for implementing full custom styles.
345
346****************************************************************************
347*                           General                                        *
348****************************************************************************
349
350General Improvements
351--------------------
352
353- The directory structure of the qtbase unit-tests has been reworked to
354  more closely match the directory structure of the code under test.
355  Integration tests have been moved to tests/auto/integrationtests.
356
357- Qt is compiled with C++11 support enabled by default, provided the compiler
358  supports C++11. Qmake based projects can enable C++11 support explicitly
359  using 'CONFIG+=c++11' in their .pro files. To enable it conditionally, use
360  'contains(QT_CONFIG,c++11):CONFIG+=c++11'. This will enable C++11 support
361  only if Qt was built with C++11 support.
362
363- The Unicode Data and Algorithms has been updated to match the
364  Unicode Standard of version 6.2. For more information see http://www.unicode.org/
365
366- The QLocale data has been updated to CLDR 22.1.
367  For more information see http://cldr.unicode.org/
368
369Third party components
370----------------------
371
372- SQLITE_ENABLE_FTS3,SQLITE_ENABLE_FTS3_PARENTHESIS and SQLITE_ENABLE_RTREE
373flags are now enabled by default on all platforms, for the sqlite3 copy under
374the 3rdparty directory.
375
376Legal
377-----
378
379 - Copyright of Qt has been transferred to Digia Plc.
380
381****************************************************************************
382*                          Library                                         *
383****************************************************************************
384
385QtCore
386------
387* [QTBUG-12144], [QTBUG-18360] The QChar methods are now able to handle the full range
388  of Unicode codepoints defined by the Unicode Standard of version 6.2.
389  QChar::isPrint() will no longer return a false positives for
390  the Unicode format characters, surrogates, and private use characters.
391
392* Drop a bogus QChar::NoCategory enum value; the proper QChar::Other_NotAssigned
393  value is returned for an unassigned codepoints now.
394
395* layoutAboutToBeChanged is no longer emitted by QAbstractItemModel::beginMoveRows.
396  layoutChanged is no longer emitted by QAbstractItemModel::endMoveRows. Proxy models
397  should now also connect to (and disconnect from) the rowsAboutToBeMoved and
398  rowsMoved signals.
399
400* The QAbstractItemModel::sibling method was made virtual, allowing implementations
401  to optimize based on internal data.
402
403* The default value of the property QSortFilterProxyModel::dynamicSortFilter was
404  changed from false to true.
405
406* The signature of the virtual QAbstractItemView::dataChanged method has changed to
407  include the roles which have changed. The signature is consistent with the dataChanged
408  signal in the model.
409
410* QFileSystemWatcher is now able to return failure in case of errors whilst
411  altering the watchlist in both the singular and QStringList overloads of
412  addPath and removePath.
413
414* QString::mid, QString::midRef and QByteArray::mid, if the position passed
415  is equal to the length (that is, right after the last character/byte),
416  now return an empty QString, QStringRef or QByteArray respectively.
417  in Qt 4 they returned a null QString or a null QStringRef.
418
419* QString methods toLongLong(), toULongLong(), toLong(), toULong(), toInt(),
420  toUInt(), toShort(), toUShort(), toDouble(), and toFloat() no longer use the
421  default or system locale, they will always use the C locale. This is to
422  guarantee consistent default conversion of strings. For locale-aware conversions
423  use the equivalent QLocale methods.
424
425* QDate, QTime, and QDateTime have undergone important behavioural changes:
426  * QDate only implements the Gregorian calendar, the switch to the Julian
427    calendar before 1582 has been removed. This means all QDate methods will
428    return different results for dates prior to 15 October 1582, and there is
429    no longer a gap between 4 October 1582 and 15 October 1582.
430  * QDate::setYMD() is deprecated, use QDate::setDate() instead
431  * Most methods now apply strict validity checks and will return appropriate
432    and consistent values when invalid.  For example, QDate::year() will return
433    0 and QDate::shortMonthName() will return QString().
434  * Adding days to a null QDate or seconds to a null QTime will no longer return
435    a valid QDate/QTime.
436  * QDate stores the Julian Day as a qint64 extending date support across a
437    more interesting range, see the class documentation for details.
438    * Conversion to YMD form dates is only accurate between to 4800 BCE to
439      1.4 million CE
440    * The QDate::addDays() and QDateTime::addDays() methods now take a qint64
441    * The QDate::daysTo() and QDateTime::daysTo() methods now return a qint64
442
443* QTextCodec::codecForCStrings() and QTextCodec::setCodecForCStrings() have both
444  been removed. This was removed due to issues with breaking other code from
445  libraries, creating uncertainty/bugs in using QString easily, and (to a lesser
446  extent) performance issues.
447
448* QTextCodec::codecForTr() and QTextCodec::setCodecForTr() have been removed.
449  QObject::trUtf8 and QCoreApplication::Encoding enum are now obsolete. Qt assumes
450  that the source code is encoded in UTF-8.
451
452* QFile::setEncodingFunction and QFile::setDecodingFunction are obsolete and do
453  nothing in Qt 5. The QFile::encodeName and QFile::decodeName functions are now
454  hardcoded to operate on QString::fromLocal8Bit and QString::toLocal8Bit
455  only. Therefore, it's still possible to obtain the old behaviour by calling
456  QTextCodec::setCodecForLocale. However, that is not recommended: new code
457  should not make assumptions about the filesystem encoding and older code should
458  have those assumptions removed.
459
460* QIntValidator and QDoubleValidator no longer fall back to using the C locale if
461  the requested locale fails to validate the input.
462
463* A new set of classes for doing pattern matching with Perl-compatible regular
464  expressions has been added: QRegularExpression, QRegularExpressionMatch and
465  QRegularExpressionMatchIterator. They aim to replace QRegExp with a more
466  powerful and flexible regular expression engine.
467
468* QEvent::AccessibilityPrepare, AccessibilityHelp and AccessibilityDescription removed:
469  * The enum values simply didn't make sense in the first place and should simply be dropped.
470
471* Filtering of native events (QCoreApplication::setEventFilter, as well as
472  QApplication::x11EventFilter/macEventFilter/qwsEventFilter/winEventFilter) have been replaced
473  with QCoreApplication::installNativeEventFilter and removeNativeEventFilter,
474  for an API much closer to QEvent filtering. Note that the native events that can be
475  filtered this way depend on which QPA backend is chosen, at runtime. On X11, XEvents are
476  not used anymore, and have been replaced with xcb_generic_event_t due to the switch to
477  XCB, which requires porting the application code to XCB as well.
478
479* [QTBUG-23529] QHash is now more resilient to a family of denial of service
480  attacks exploiting algorithmic complexity, by supporting two-arguments overloads
481  of the qHash() hashing function.
482
483* [QTBUG-4844] QObject::disconnectNotify() is now called when a receiver is destroyed.
484
485* QStateMachine
486  - [QTBUG-15430] Added a QStateMachine constructor that takes a ChildMode parameter.
487  - [QTBUG-17975] Delayed event posting now works from secondary threads.
488  - [QTBUG-19789] Signal transitions now work correctly when the sender is in a different thread.
489  - [QTBUG-20362] Property assignments now work as expected with nested, parallel states.
490  - [QTBUG-22931] The root state can now be a parallel state group.
491  - [QTBUG-24307] The initial state is now entered before the started() signal is emitted.
492  - [QTBUG-25959] State entry and exit order is now SCXML spec-compliant.
493
494* qDebug(), qWarning(), qCritical(), and qFatal() were changed to macros that track the origin
495  of the message in source code. Whether this and other meta-information is printed can be
496  configured  (for the default message handler) by setting the new QT_MESSAGE_PATTERN environment
497  variable. qInstallMsgHandler() has been deprecated, and should be replaced with
498  qInstallMessageHandler().
499
500* QTextBoundaryFinder
501  - [QTBUG-6498] The word start and word end boundaries detection is now
502    unaware of surrounding white space characters.
503  - SoftHyphen enum value has been added to specify a line break opportunity
504    at a soft hyphen (SHY) character.
505  - MandatoryBreak enum value has been added to specify a mandatory (aka "hard") line breaks.
506  - Source-incompatible change: Since the behavior of boundaryReasons() method
507    has been changed a lot, StartWord/EndWord enum values were intentionally replaced
508    with StartOfItem/EndOfItem ones to force the affected code be revised.
509
510* Softkeys API was removed. The following functions and enums were removed:
511  - QAction::setSoftKeyRole()
512  - QAction::softKeyRole()
513  - QAction::SoftKeyRole
514  - Qt::WA_MergeSoftkeys
515  - Qt::WA_MergeSoftkeysRecursively
516  - Qt::WindowSoftkeysVisibleHint
517  - Qt::WindowSoftkeysRespondHint
518
519* QLocale
520  - [QTBUG-27987] Constructing a QLocale object with the short locale id has been improved.
521
522* QObject
523  - Added overloads of connect() to connect using pointers to member function
524  - Added QObject::isSignalConnected()
525
526QtGui
527-----
528* Accessibility has been refactored. The hierachy of accessible objects is implemented via
529  proper parent/child functions instead of using navigate which has been deprecated for this purpose.
530  Table and cell interfaces have been added to qaccessible2.h
531
532* Touch events and points have been extended to hold additional
533  information like capability flags, point-specific flags, velocity,
534  and raw positions.
535
536* A new set of enabler classes have been added, most importantly QWindow, QScreen,
537  QSurfaceFormat, and QOpenGLContext.
538
539* Most of the useful QtOpenGL classes have been polished and moved into
540  QtGui. See QOpenGLFramebufferObject, QOpenGLShaderProgram,
541  QOpenGLFunctions, etc.
542
543* QOpenGLPaintDevice has been added to be able to use QPainter to render into
544  the currently bound context.
545
546* Behavioral change in QImage::fill() on an image with format Format_RGB888:
547  For consistency with RGB32 and other 32-bit formats, function now expects
548  image data in RGB layout as opposed to BGR layout.
549
550* Behavioral change in QImage and QPixmap load()/loadFromData() on a non-null image:
551  If load() or loadFromData() fails to load the image (returns false) then
552  the existent image data will be invalidated, so that isNull() is guaranteed
553  to return true in this case.
554
555* Behavioral change regarding QPainter fill rules when not using antialiased
556  painting: The fill rules have changed so that the aliased and antialiased
557  coordinate systems match. Earlier there used to be an offset of slightly less
558  than half a pixel when doing sub-pixel rendering, in order to be consistent
559  with the old X11 paint engine. The new behavior should be more predictable and
560  gives the same consistent rounding for images / pixmaps as for paths and
561  rectangle filling. It's possible to still get the old behavior by setting the
562  QPainter::Qt4CompatiblePainting render hint.
563
564* Behavioral change regarding QPen: The default QPen constructors now create a
565  1-width non-cosmetic pen as opposed to a 0-width cosmetic pen. The old
566  behavior can be emulated by setting the QPainter::Qt4CompatiblePainting
567  render hint when painting.
568
569QtWidgets
570---------
571* A new style QFusionStyle has been introduced, while QPlastiqueStyle, QCleanlooksStyle,
572  QCDEStyle and QMotifStyle have been removed. The older styles will be
573  made available to applications as a standalone source package.
574
575* QInputContext removed as well as related getters and setters on QWidget and QApplication.
576  Input contexts are now platform specific.
577
578* QInputDialog::getInteger() has been obsoleted. Use QInputDialog::getInt() instead.
579
580* In Qt 4, QStyle::standardIconImplementation() and layoutSpacingImplementation()
581  were introduced instead of making the corresponding methods virtual due to binary
582  compatibility reasons. QStyle::standardIcon() and layoutSpacing() have been made
583  (pure) virtual in Qt 5.
584
585* In Qt 4, many QStyleOption subclasses were introduced in order to keep
586  binary compatibility -- QStyleOption was designed to be extended this way,
587  in fact it embeds a version number. In Qt 5 the various QStyleOption*V{2,3,4}
588  classes have been removed, and their members merged into the respective
589  base classes. Those classes were left as typedefs to keep existing code
590  working. Still, some minor adjustements could be necessary, especially in code
591  that uses QStyleOption directly and does not initialize all the members using
592  the proper Qt API: due to the version bump, QStyle will try to use the additional
593  QStyleOption members, which are left default-initialized.
594
595* QHeaderView has been refactored and the following functions have been obsoleted:
596
597  * void setMovable(bool movable) - use void setSectionsMovable(bool movable) instead.
598
599  * bool isMovable() const - use bool sectionsMovable() const instead.
600
601  * void setClickable(bool clickable) - use void setSectionsClickable(bool clickable) instead.
602
603  * bool isClickable() const - use bool sectionsClickable() instead.
604
605  * void setResizeMode(int logicalindex, ResizeMode mode) -
606    use setSectionResizeMode(logicalindex, mode) instead.
607
608  * ResizeMode resizeMode(int logicalindex) const -
609    use sectionResizeMode(int logicalindex) instead.
610
611  * setSortIndicator will no longer emit sortIndicatorChanged when the sort indicator is unchanged.
612
613* QDateEdit and QTimeEdit have re-gained a USER property. These were originally removed
614    before Qt 4.7.0, and are re-added for 5.0. This means that the userProperty for
615    those classes are now QDate and QTime respectively, not QDateTime as they have been
616    for the 4.7 and 4.8 releases.
617
618* QGraphicsItem and derived classes - Passing a QGraphicsScene in the items constructor
619  is no longer supported. Construct the item without a scene and then call
620  QGraphicsScene::addItem() to add the item to the scene.
621
622* QAbstractItemView and derived classes only emit the clicked() signal on left click now,
623  instead of on all mouse clicks.
624
625* QProxyModel has been removed. It is deprecated since early Qt 4 versions and replaced
626  by QAbstractProxyModel and related classes. A copy of QProxyModel is available
627  in the UiHelpers library.
628
629* The virtual methods QApplication::commitData and QApplication::saveState, used for session
630  management, no longer exist.
631  Connect to the commitDataRequest and saveStateRequest signals instead.
632  The new isSessionSaving() method can be used in the cases where the closeEvent of your
633  window needs to know whether it is being called during shutdown.
634
635* [QTBUG-20503] QFileSystemModel no longer masks out write permissions from the permissions
636  returned from permissions() or data(FilePermissions), even if in read-only mode
637  (QFileSystemModel::isReadOnly()).
638
639* [QTBUG-158 QTBUG-428 QTBUG-26501] QComboBox::currentText improvements
640  Restored currentText as USER property.
641  New setter setCurrentText(), marked as WRITE method, usable by QItemDelegate and QDataWidgetMapper.
642  New signal currentTextChanged() marked as NOTIFY method.
643
644QtNetwork
645---------
646* QHostAddress::isLoopback() API added. Returns true if the address is
647  one of the IP loopback addresses.
648
649* QSslCertificate::serialNumber() now always returns the serial number in
650  hexadecimal format.
651
652* The openssl network backend now reads the ssl configuration file allowing
653  the use of openssl engines.
654
655QtDBus
656------
657* QtDBus now generates property annotations for the Qt type names
658  in the org.qtproject.QtDBus namespace. When parsing such annotations
659  both the old and new namespaces are accepted.
660
661* QtDBus error codes have been updated to be on the org.qtproject.QtDBus.Error
662  namespace.
663
664QtConcurrent
665------------
666
667* QtConcurrent is no longer in QtCore, but forms its own library now.
668  QMake-based projects can use
669    QT += concurrent
670  to include the new library.
671
672* QtConcurrent::Exception has been renamed to QException, and is still in QtCore.
673  Ditto QtConcurrent::UnhandledException.
674
675QtOpenGL
676--------
677
678* Most of the classes in this module (with the notable exception of QGLWidget)
679  now have equivalents in QtGui, along with the naming change QGL -> QOpenGL.
680  The classes in QtOpenGL that have equivalents in QtGui can now be considered
681  deprecated.
682* QGLPixelBuffer is now deprecated and implemented in terms of a hidden
683  QGLWidget and a QOpenGLFramebufferObject. It is recommended that applications
684  using QGLPixelBuffer for offscreen rendering to a texture switch to using
685  QOpenGLFramebufferObject directly instead, for improved performance.
686* The default major version of QGLFormat has been changed to 2 to be aligned
687  with QSurfaceFormat. Applications that want to use a different version should
688  explicitly request it using QGLFormat::setVersion().
689* void QGLContext::generateFontDisplayLists(const QFont& font, int listBase)
690  and int QGLWidget::fontDisplayListBase(const QFont & fnt, int listBase)
691  which were deprecated in Qt 4 have been removed.
692* Previously deprecated default value listBase parameter has been removed from
693  both QGLWidget::renderText() functions.
694* In order to ensure support on more platforms, stricter requirements have been
695  introduced for doing threaded OpenGL. First, you must call makeCurrent() at
696  least once per swapBuffers() call, so that the platform has a chance to
697  synchronize resizes to the OpenGL surface. Second, before doing makeCurrent()
698  or swapBuffers() in a separate thread, you must call
699  QGLContext::moveToThread(QThread *) to explicitly let Qt know in which thread
700  a QGLContext is currently being used. You also need to make sure that the
701  context is not current in the current thread before moving it to a different
702  thread.
703
704QtScript
705--------
706* [QTBUG-2124]  Added default conversion for long and unsigned long.
707* [QTBUG-6133]  Fixed QScriptContextInfo::functionMetaIndex() for overloaded
708  slots.
709* [QTBUG-15213] Doc: Added missing properties to the ECMAScript reference.
710* [QTBUG-15956] Doc: Removed wrong information about Error .stack properties.
711* [QTBUG-17915] Fixed a crash when a JS property descriptor was only partially
712  defined.
713* [QTBUG-18188] Fixed a regression that caused contexts created by
714  QScriptEngine::pushContext() to inherit the parent context's scope.
715* [QTBUG-18201] Suppressed 'LEAK' messages on stderr at application exit.
716* [QTBUG-20378] Fixed QtScriptTools compilation when some features are disabled.
717* [QTBUG-20845] Fixed a precision bug in the calculator example.
718* [QTBUG-21548] Fixed a crash in QScriptEngineDebugger when the QScriptEngine
719  being debugged was deleted.
720* [QTBUG-21760] Fixed a crash when accessing QObject properties through an
721  activation object.
722* [QTBUG-21896] Fixed a crash when converting an invalid JS value to a string.
723* [QTBUG-21993] Fixed a bug that caused QObject wrapper objects created with
724  the PreferExistingWrapperObject option to not be garbage collected, even if
725  the object was not referenced anywhere in the scripting environment.
726* [QTBUG-22152] Fixed build issue on Solaris.
727* [QTBUG-23871] Fixed a JIT crash on x86-64 caused by out-of-range branch
728  instructions.
729* [QTBUG-26261] Fixed a crash when a queued signal handler no longer existed.
730* [QTBUG-26590] Fixed a bug that caused QObjects with script connections to
731  not be garbage collected as expected.
732
733QTestLib
734--------
735* [QTBUG-20615] Autotests can now log test output to multiple destinations
736  and log formats simultaneously.
737* [QTBUG-21645] QSignalSpy now handles QVariant signal parameters more
738  intuitively; the QVariant value is copied directly, instead of being
739  wrapped inside a new QVariant. This means that calling
740  qvariant_cast<QVariant>() on the QSignalSpy item (to "unwrap" the value)
741  is no longer required (but still works).
742
743QtSql
744-----
745QSqlQueryModel/QSqlTableModel/QSqlRelationalTableModel
746
747* The dataChanged() signal is now emitted for changes made to an inserted
748record that has not yet been committed. Previously, dataChanged() was
749suppressed in this case for OnRowChange and OnFieldChange. This was probably
750an attempt to avoid trouble if setData() was called while handling
751primeInsert(). By emitting dataChanged(), we ensure that all views are aware
752of the change.
753
754* While handling primeInsert() signal, the record must be manipulated using
755the provided reference. Do not attempt to manipulate the records using the
756model methods setData() or setRecord().
757
758* removeRows() no longer emits extra beforeDelete signal for out of range row.
759
760* removeRows() now requires the whole range of targetted rows to be valid
761before doing anything. Previously, it would remove what it could and
762ignore the rest of the range.
763
764* removeRows(), for OnFieldChange and OnRowChange, allows only 1 row to be
765removed and only if there are no other changed rows.
766
767* setRecord() and insertRecord()
768  -The generated flags from the source record are preserved in the model
769  and determine which fields are included when changes are applied to
770  the database.
771  -Require all fields to map correctly. Previously fields that didn't
772  map were simply ignored.
773  -For OnManualSubmit, insertRecord() no longer leaves behind an empty
774  row if setRecord() fails.
775  -setRecord() now automatically submits for OnRowChange.
776
777* QSqlQueryModel::indexInQuery() is now virtual. See
778QSqlTableModel::indexInQuery() as example of how to implement in a
779subclass.
780
781* QSqlQueryMode::setQuery() emits fewer signals. The modelAboutToBeReset()
782and modelReset() signals suffice to inform views that they must reinterrogate
783the model.
784
785* QSqlTableModel::select() is now a slot.
786
787* QSqlTableModel::selectRow(): This is a new slot that refreshes a single
788row in the model from the database.
789
790* QSqlTableModel edit strategies OnFieldChange/OnRowChange QTBUG-2875
791Previously, after changes were submitted in these edit strategies, select()
792was called which removed and inserted all rows. This ruined navigation
793in QTableView. Now, with these edit strategies, there is no implicit select()
794done after committing. This includes deleted rows which remain in
795the model as blank rows until the application calls select(). Instead,
796selectRow() is called to refresh only the affected row.
797
798* QSqlTableModel::isDirty(): New overloaded method to check whether model
799has any changes to submit. QTBUG-3108
800
801* QSqlTableModel::setData() and setRecord() no longer revert pending changes
802that fail upon resubmitting for edit strategies OnFieldChange and OnRowChange.
803Instead, pending (failed) changes cause new changes inappropriate to the
804edit strategy to be refused. The application should resolve or revert pending
805changes. insertRows() and insertRecord() also respect the edit strategy.
806
807* QSqlTableModel::setData() and setRecord() in OnRowChange no longer have the
808side effect of submitting the cached row when invoked on a different row.
809
810* QSqlDriver::subscribeToNotification, unsubscribeFromNotification,
811subscribedToNotifications, isIdentifierEscaped, and stripDelimiters
812are now virtual. Their xxxImplemenation counterparts have been removed
813now that QSqlDriver subclasses can reimplement these directly.
814
815****************************************************************************
816*                          Database Drivers                                *
817****************************************************************************
818
819sqlite
820------
821* QVariant::Bool type now mapped to integers 0/1 in SQL instead of strings
822'true' and 'false'. Sqlite does not have a boolean column type and it is
823customary to use integer. QTBUG-23895
824
825postgres
826--------
827* the error message returned in QSqlError::text() has the SQLSTATE error code
828appended in parantheses.
829
830****************************************************************************
831*                      Platform Specific Changes                           *
832****************************************************************************
833
834The Qt platform implementations have been rewritten as plugins for the Qt
835Platform Abstraction (QPA):
836
837* The platform plugin(s) needs to be bundled when applications are deployed.
838* The platform implementations are in large parts rewrites.
839* Q_WS_* defines are no longer defined. Q_OS_* is.
840* Some platform specific functionality and API is missing from the 5.0
841  release and will be added later.
842* Platform spesific functionality will be added in separate modules:
843  QtMacExtras: http://qt.gitorious.org/qtplayground/qtmacextras
844
845
846Qt for Linux/X11
847----------------
848
849
850Qt for Windows
851--------------
852* Accessibility framework uses IAccessible2
853* ANGLE can be used to provide Open GL ES 2.0 (see http://code.google.com/p/angleproject/)
854
855Qt for Mac OS X
856---------------
857* Qt now uses Cocoa, the Carbon port has been removed.
858* The minimum supported OS X version is 10.6. PPC is not supported.
859* Qt generally supports cross OS X version build and deployment (build
860  on any supported version and deploy to any other). One exception is
861  QtWebkit, which should be built using the 10.6 SDK if you want to target
862  that platform.
863* The Qt binary installer has been changed to use the Qt installer framework.
864  Qt is now installed into one location instead of being spread out over multiple
865  directories.
866* The Qt binary installer is built against the 10.7 SDK and does not
867  run on 10.6.
868* The Clang compiler is used by default. Gcc is available trough the
869  macx-g++* mkspecs.
870* Build-system support for universal binaries has been removed. The "lipo"
871  command-line tool can be used as a workaround.
872* Qt now use the raster paint engine on all platforms for drawing widgets.
873  CoreGraphics is still used for printing on Mac.
874* Support for high-dpi "retina" displays has been added for widgets,
875  OpenGL and QtQuick.
876* The unified toolbar implementation from Qt 4 has not and will not be ported
877  to Qt 5. This means calling QMainWindow::setUnifiedTitleAndToolBarOnMac has
878  no effect on Qt 5. A replacement API which wraps NSToolbar is available in
879  QtMacExtras.
880* MacDeployQt plugin deployment has been improved. It will no longer try to
881  deploy all plugins with all dependencies.
882* Qt has been updated to be in compliance with the Mac App Store sandbox, and
883  will for example no longer try to write settings to files outside the sandbox.
884* The "qt_menu.nib" issue preventing static/non-framework builds from working
885  has been fixed.
886
887
888Qt for Embedded Linux
889---------------------
890
891
892Qt for Windows CE
893-----------------
894
895
896****************************************************************************
897*                      Compiler Specific Changes                           *
898****************************************************************************
899
900
901****************************************************************************
902*                          Tools                                           *
903****************************************************************************
904
905- Build System
906
907  * Qt has been split into numerous repositories. Configure covers mostly only qtbase's options.
908  * Qt will now install CMake configuration files for all its libraries.
909
910- configure
911
912  * The Mac OS X -dwarf2 configure argument has been removed. DWARF2 is always
913    used on Mac OS X now.
914  * The following options have been added: (-no)-force-asserts, (-no)-strip, (-no)-gui &
915    (-no)-widgets, -device & -device-option, -archdatadir, -libexecdir & -qmldir,
916    and numerous changes relating to specific Qt features and dependencies.
917  * Configure will no longer call "qmake -recursive" by default, as the subsequent
918    build invokes qmake as needed. Use -fully-process to restore the old behavior.
919
920- qmake
921
922  * default_pre.prf is now evaluated per subproject & build pass, symmetrically
923    to default_post.prf.
924  * .qmake.conf files (.qmake.cache equivalent in source tree) are read now.
925  * Project-specific mkspecs/ and features/ directories are supported now.
926    QMAKEPATH and QMAKEFEATURES can be set in .qmake.{config,cache} to specifiy their
927    location, and qmake will find them in the project's top-level directory automatically.
928  * Mixing host and target subprojects is now supported. "default-host" makespec
929    was added; option(host_build) enables its use.
930  * QMAKE_MOC_OPTIONS variable is now available for passing additional parameters
931    to the moc.
932  * The CROSS_COMPILE variable and property can be used to parametrize the device
933    and mingw makespecs.
934  * QMAKE_RPATHLINKDIR (complementary to QMAKE_RPATHDIR) is now understood.
935  * The "aux" TEMPLATE was added. Does not work with vcproj and xcode output files.
936  * The properties QT_INSTALL_ARCHDATA, QT_INSTALL_LIBEXECS, QT_INSTALL_QML,
937    QMAKE_SPEC & QMAKE_XSPEC were added. QT_INSTALL_DEMOS is obsolete.
938  * The following functions have been added: $$sort_depends, $$resolve_depends,
939    $$enumerate_vars, $$reverse, $$val_escape, $$format_number, $$shadowed,
940    $$clean_path, $$system_path, $$shell_path, $$absolute_path, $$relative_path,
941    $$system_quote, $$shell_quote, cache, write_file, touch, mkpath & log.
942    defined can now query variables; $$cat and $$system support more splitting modes.
943    qtCompileTest (available from configure.prf) was added.
944  * Removed qttest_p4.prf. Use CONFIG+=testcase and other flags instead.
945  * QMAKE_SUBSTITUTES can now copy files verbatim.
946  * MSVC desktop builds now use -Zc:wchar_t.
947  * The following variables were added: QMAKESPEC, _QMAKE_CONF_ & _QMAKE_SUPER_CACHE_.
948  * QDBUSXML2CPP_{INTERFACE,ADAPTOR}_{HEADER,SOURCE}_FLAGS are now understood,
949    and DBUS_{INTERFACES,ADAPTORS} support file groups with individual flags now.
950  * QT_PRIVATE and PKGCONFIG_PRIVATE (analogous to LIBS_PRIVATE resp. PKGCONFIG) are now understood.
951  * INSTALLS entries now support copying with subdirectory (e.g., entry.base = $$dirname(PWD)).
952  * Defining QTPLUGIN in dynamically linked projects does not hurt any more.
953  * CONFIG+=import_plugins will now cause plugin imports for QTPLUGIN being auto-generated.
954  * Debug info generation can now be enabled also for release builds (CONFIG+=force_debug_info).
955  * The following CONFIG flags have been deprecated in favor of QT module entries:
956    qtestlib, qdbus, help, designer, uitools, qaxserver & qaxcontainer (the leading 'q'
957    was stripped from the affected modules).
958  * The IN_PWD alias for PWD was deprecated.
959  * QMAKE_{DIST,}CLEAN support normalized path separators now.
960  * CONFIG+=depend_includepath is on by default now. DEPENDPATH is unnecessary in most projects.
961  * Makespecs should be adjusted in the following ways:
962    * The QMAKE_INCDIR_QT, QMAKE_LIBDIR_QT, QMAKE_MOC, QMAKE_UIC, QMAKE_IDC, TEMPLATE & QT
963      variables should not be defined any more. Furthermore, QMAKE_LIBS_X11SM is obsolete.
964    * The qt, warn_on, release, & link_prl CONFIG flags should not be set any more.
965    * The QMAKE_PLATFORM & QMAKE_COMPILER variables should be defined now.
966      Several other variables should be defined by including files from mkspecs/common/.
967
968- Assistant
969
970- Designer
971  * [QTBUG-8926] [QTBUG-20440] Properties of type QStringList now have
972    translation attributes which apply to all items.
973    They are by default translatable.
974
975- Linguist
976
977  * The integration with Mac OS' document handling was improved
978  * lupdate can now treat other .ts files as sources
979  * lupdate's CODECFORTR is deprecated and will be removed soon. All source code
980    written with Qt is expected to use UTF-8 encoding.
981
982- rcc
983
984
985- moc
986
987* [QTBUG-20785] The moc now has a -b<file> option to #include an additional
988  file at the beginning of the generated file.
989* moc is now able to fully understand and expands preprocessor macros.
990
991- uic
992
993
994- qtconfig
995
996
997****************************************************************************
998*                          Plugins                                         *
999****************************************************************************
1000- The text codecs that were previously plugins are now built into QtCore.
1001- Code using Q_EXPORT_PLUGIN macros will no longer compile. Use
1002  Q_PLUGIN_METADATA instead. Note that this requires that the class
1003  be default-constructible.
1004
1005****************************************************************************
1006*                   Important Behavior Changes                             *
1007****************************************************************************
1008
1009- QPointer
1010
1011   * The implementation of QPointer has been changed to use QWeakPointer. The
1012     old guard mechanism has been removed. This causes a slight change
1013     in behavior when using QPointer:
1014
1015     * When using QPointer on a QWidget (or a subclass of QWidget), previously
1016     the QPointer would be cleared by the QWidget destructor. Now, the QPointer
1017     is cleared by the QObject destructor (since this is when QWeakPointers are
1018     cleared). Any QPointers tracking a widget will NOT be cleared before the
1019     QWidget destructor destroys the children for the widget being tracked.
1020
1021- QUrl
1022
1023  * QUrl has been changed to operate only on percent-encoded
1024    forms. Fully-decoded forms, where the percent character stands for itself,
1025    are no longer possible. For that reason, the getters and setters with
1026    "encoded" in the name are deprecated, except for QUrl::toEncoded() and
1027    QUrl::fromEncoded().
1028
1029    QUrl now operates in a mode where it decodes as much as it can of the
1030    percent-encoding sequences. In addition, the setter methods possess a mode
1031    in which a '%' character not part of a percent-encoding sequence will cause
1032    the parser to correct the input. Therefore, most software will not require
1033    changes to adapt, since the getter methods will continue returning the
1034    components in their most-decoded form as they did before and the setter
1035    methods will accept input as they did before..
1036
1037    The most notable difference is when dealing with
1038    QUrl::toString(). Previously, this function would return percent characters
1039    in the URL by themselves. Now, it will return "%25", like
1040    QUrl::toEncoded().
1041
1042- QLibraryInfo
1043
1044  * location() always returns paths with normalized separators now.
1045
1046- QVariant
1047
1048  * Definition of QVariant::UserType changed. Currently it is the same as
1049    QMetaType::User, which means that it points to the first registered custom
1050    type, instead of a nonexistent type.
1051
1052- QMetaType
1053
1054  * Interpretation of QMetaType::Void was changed. Before, in some cases
1055    it was returned as an invalid type id, but sometimes it was used as a valid
1056    type (C++ "void"). In Qt5, new QMetaType::UnknownType was introduced to
1057    distinguish between these two. QMetaType::UnknownType is an invalid type id
1058    signaling that a type is unknown to QMetaType, and QMetaType::Void
1059    is a valid type id of C++ void type. The difference will be visible for
1060    example in call to QMetaType::typeName(), this function will return null for
1061    QMetaType::UnknownType and a pointer to "void" string for
1062    QMetaType::Void.
1063    Please, notice that QMetaType::UnknownType has value 0, which previously was
1064    reserved for QMetaType::Void.
1065
1066- QWidget
1067
1068  * No need to set the application name in setWindowTitle() anymore, this is done
1069    automatically, on Windows and Unix/X11, provided that the (possibly translated)
1070    application display name is set with QGuiApplication::setApplicationDisplayName().
1071
1072- QMessageBox
1073
1074     * The static function QMessageBox::question has changed the default argument
1075     for buttons. Before the default was to have an Ok button. That is changed
1076     to having a yes and a no button.
1077
1078- qmake & configure
1079
1080  * The project file parser has been rewritten from scratch. Invalid syntax will be
1081    rejected more aggressively, and interpretation may have changed in some corner cases.
1082  * Projects which explicitly set an empty TARGET are considered broken now.
1083  * The makespec and .qmake.cache do not see build pass specific variables any more.
1084  * load()/include() with a target namespace and infile()/$$fromfile() now start with
1085    an entirely pristine context.
1086  * Configure's -sysroot and -hostprefix are now handled slightly differently.
1087    The QT_INSTALL_... properties are now automatically prefixed with the sysroot;
1088    the raw values are available as QT_INSTALL_.../raw and the sysroot as QT_SYSROOT.
1089    The new QT_HOST_... properties can be used to refer to the Qt host tools.
1090    -no-gcc-sysroot can be used for non-standard sysroot configurations.
1091  * The QMAKE_MKSPECS property became unavailable at the command line. Query QT_HOST_DATA instead.
1092  * The TEMPLATE_PREFIX variable is gone. Use contains(TEMPLATE, vc.*) instead.
1093  * The "default" makespec symlink/directory is gone. Use qmake -query QMAKE_XSPEC instead.
1094  * DEPENDPATH does not end up in VPATH any more. Some SOURCES may not be found any more.
1095  * Several functions and built-in variables were modified to return normalized paths.
1096  * The -(no-)exception flags in configure have been removed. Qt modules are now compiled
1097    without exceptions by default, as they do not use them and can neither handle them
1098    properly. Qt Core still has exceptions enabled to correctly throw bad_alloc exceptions
1099    in our tool classes.
1100    Whether code should be compiled with exception support enabled or disabled can be
1101    controlled by a CONFIG += exceptions/exceptions_off setting in the .pro file.
1102  * The -no/-stl configure options are gone. Qt always uses the STL now.
1103  * The -no/-fast configure options are gone.
1104  * The -prefix-install configure option is gone. Use -prefix, etc. instead.
1105  * The -make option of the Windows configure was renamed to -make-tool.
1106    -make now complements -no-make, like in the Unix version.
1107  * The object_with_source CONFIG flag was removed. Use object_parallel_to_source instead.
1108  * Support for universal binaries on Mac OS has been removed.
1109  * The processor architecture handling changed significantly. This affects the -arch & -*-endian
1110    configure options, the QT_ARCH qmake variable, and more.
1111  * No "make_default" make targets will be generated any more. Use "make_first" instead.
1112  * The "qmake" make targets are non-recursive now. Use "qmake_all" to recurse.
1113  * load() with paths relative to the current project is not supported any more.
1114    Use include() instead.
1115  * Persistent qmake properties are not versioned any more. Also, the vendor changed to
1116    "QtProject", so old settings are lost.
1117  * Support for the Borland toolchain was removed. Numerous obsolete makespecs were culled.
1118  * setcepaths.bat is gone. QMake-generated Makefiles are self-contained now.
1119  * moc_dir, rcc_dir and some other tool variables are not defined in Qt's .pc files any more;
1120    the generic host_bins is defined instead.
1121
1122