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