| Some of the changes listed in this file include issue tracking numbers |
| corresponding to tasks in the Qt Bug Tracker: |
| |
| http://bugreports.qt-project.org/ |
| |
| Each of these identifiers can be entered in the bug tracker to obtain more |
| information about a particular change. |
| |
| |
| **************************************************************************** |
| * Source incompatible changes * |
| **************************************************************************** |
| |
| - The Qt 3 support module and all related code was removed. |
| |
| - QAtomicInt's and QAtomicPointer's non-atomic convenience methods |
| (i.e., operator=, operator int / operator T*, operator!, operator==, |
| operator!= and operator->) have been removed as they did implicit |
| loads and stores of unspecified memory ordering. Code dealing with |
| is expected to use load(), loadAquire(), store() and storeRelease() |
| as necessary instead. |
| |
| - QObject |
| * The signatures of the connectNotify() and disconnectNotify() functions |
| have changed. The functions now get passed a QMetaMethod that identifies |
| the signal, rather than a const char *. |
| |
| - QSslCertificate::subjectInfo() and QSslCertificate::issuerInfo() now |
| return a QStringList instead of a QString |
| |
| - QSslCertificate::isValid() has been deprecated. Originally it only checked |
| the certificate dates, but later checking for blacklisting was added. Now |
| there's a more specific QSslCertificate::isBlacklisted() method. |
| |
| - Unite clipping support has been removed from QPainter. The alternative is |
| to unite QRegion's and using the result on QPainter. |
| |
| - QLibrary::resolve() now returns a function pointer instead of a void |
| pointer. |
| |
| - QSslCertificate::alternateSubjectNames() is deprecated (but can be enabled |
| via QT_DISABLE_DEPRECATED_BEFORE), use |
| QSslCertificate::subjectAlternativeNames() instead. |
| |
| - QLibraryInfo::buildKey() has been removed. Likewise, the QT_BUILD_KEY |
| preprocessor #define has also been removed. The build-key is obsolete |
| and is no longer necessary. |
| |
| - QCoreApplication::translate() will no longer return the source text when |
| the translation is empty. Use lrelease -removeidentical for optimization. |
| |
| - QTranslator subclasses need to adjust the signature of the virtual method |
| translate() in order to add the "int n = -1" argument. |
| |
| - QString and QByteArray constructors that take a size argument will now treat |
| negative sizes to indicate nul-terminated strings (a nul-terminated array of |
| QChar, in the case of QString). In Qt 4, negative sizes were ignored and |
| result in empty QString and QByteArray, respectively. The size argument to |
| those constructors now has a default value of -1, thus replacing the separate |
| constructors that did the same. |
| |
| - Qt::escape() is deprecated (but can be enabled via |
| QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead. |
| |
| - QBool is gone. QString::contains, QByteArray::contains, and QList::contains |
| used to return an internal QBool class so that the Qt3 code |
| "if (a.contains() == 2)" wouldn't compile anymore. Such code cannot exist |
| in Qt4, so these methods return a bool now. If your code used the undocumented |
| QBool, simply replace it with bool. |
| |
| - The old macros TRUE and FALSE have been removed, use true and false instead. |
| |
| - qIsDetached<> has been removed without replacement. |
| |
| - The return type of QFlags<Enum>::operator int() now matches the Enum's underlying |
| type in signedness instead of always being 'int'. This was done in order to allow |
| QFlags over enums whose underlying type is unsigned (Qt::MouseButton is one such |
| enum). |
| |
| - QMetaType: |
| * QMetaType::construct() has been renamed to QMetaType::create(). |
| * QMetaType::unregisterType() has been removed. |
| * QMetaType now records if the type argument inherits QObject. This |
| can be used in scripting APIs, so that custom QObject subclasses |
| are treated as QObject pointers. In QtScript for example, this can |
| mean that QScriptValue.isQObject can be true where it was false before. |
| * QMetaType::QWidgetStar has been removed. Use qMetaTypeId<QWidget*>() |
| or QVariant::canConvert<QWidget*>() as appropriate. |
| |
| - QMetaMethod: |
| * QMetaMethod::signature() has been renamed to QMetaMethod::methodSignature(), |
| and the return type has been changed to QByteArray. This was done to be able |
| to generate the signature string on demand, rather than always storing it in |
| the meta-data. |
| * QMetaMethod::typeName() no longer returns an empty string when the return |
| type is void; it returns "void". The recommended way of checking whether a |
| method returns void is to compare the return value of QMetaMethod::returnType() |
| to QMetaType::Void. |
| |
| - QVariant: |
| * Inconsistent constructor taking Qt::GlobalColor and producing QVariant(QColor) |
| instance was removed. Code constructing such variants can be migrated by |
| explicitly calling QColor constructor. For example from "QVariant(Qt::red)" |
| to "QVariant(QColor(Qt::red))" |
| * Similarly, implicit creation of QVariants from enum values Qt::BrushStyle, |
| Qt::PenStyle, and Qt::CursorShape have been removed. Create objects explicitly |
| or use static_cast<int>(Qt::SolidLine) to create a QVariant of type int with |
| the same value as the enum. |
| |
| - QLocale: |
| * The historical language and country names were updated to their modern values, |
| some deprecated names were dropped or mapped to their modern alternatives. |
| |
| - QTestLib: |
| * The plain-text, xml and lightxml test output formats have been changed to |
| show a test result for every row of test data in data-driven tests. In |
| Qt4, only fails and skips were shown for individual data rows and passes |
| were not shown for individual data rows, preventing accurate calculation |
| of test run rates and pass rates. |
| * The QTRY_VERIFY and QTRY_COMPARE macros have been moved into QTestLib. |
| These macros formerly lived in tests/shared/util.h but are now provided |
| by including the <QtTest/QtTest> header. In addition, |
| QTRY_VERIFY_WITH_TIMEOUT and QTRY_COMPARE_WITH_TIMEOUT are provided, |
| allowing for specifying custom timeout values. |
| * The QTEST_NOOP_MAIN macro has been removed from the API. If a test is |
| known at compile-time to be inapplicable for a particular build it should |
| be omitted via .pro file logic, or the test should call QSKIP in the |
| initTestCase() method to skip the entire test and report a meaningful |
| explanation in the test log. |
| * The DEPENDS_ON macro has been removed from the API. This macro did nothing |
| and misled some users to believe that they could make test functions depend |
| on each other or impose an execution order on test functions. |
| * The QTest::qt_snprintf function has been removed from the API. This was an |
| internal testlib function that was exposed in the public API due to its use |
| in a public macro. Any calls to this function should be replaced by a call |
| to qsnprintf(), which comes from the <QtCore/QByteArray> header. |
| * The QTest::pixmapsAreEqual() function has been removed from the API. |
| Comparison of QPixmap objects should be done using QCOMPARE, which provides |
| more informative output in the event of a failure. |
| * The QSKIP macro no longer has the "mode" parameter, which caused problems |
| for calculating test metrics, as the SkipAll mode hid information about |
| what test data was skipped. Calling QSKIP in a test function now behaves |
| like SkipSingle -- skipping a non-data-driven test function or skipping |
| only the current data row of a data-driven test function. Every skipped |
| data row is now reported in the test log. |
| * The qCompare() function template was both overloaded and specialised, which |
| made it almost impossible to specialise the correct primary template and |
| could lead to indecipherable error messages or surprising overload resolution |
| (such as going via qCompare(QFlags<void*>,int) to satisfy a request for |
| qCompare<void*>()). Now, specialisation has been replaced by overloading. |
| As a consquence, code such as qCompare<QString>(l, r) will no longer use the |
| QString-specific implementation and may fail to compile. We recommend you |
| replace specialisations with overloading, too. Also, don't pass explicit |
| template arguments to qCompare (e.g. qCompare<QString>(l, r)), but let |
| overload resolution pick the correct one, and cast arguments in case of |
| ambiguous overloads (e.g. qCompare(QString(l), r)). The resulting code will |
| continue to work against older QtTestlib versions. |
| |
| - The QSsl::TlsV1 enum value was renamed to QSsl::TlsV1_0 . |
| |
| - QAccessible: |
| * Internal QAccessible::State enum value HasInvokeExtension removed |
| - QAccessibleInterface: |
| * The "child" integer parameters have been removed. This moves the api |
| to be closer to IAccessible2. |
| This means several functions lose their integer parameter: |
| text(Text t, int child) -> text(Text t), rect(int child) -> rect() |
| setText(Text t, int child, const QString &text) -> setText(Text t, const QString &text) |
| role(int child) -> role(), state(int child) -> state() |
| * parent() and child() was added in order to do hierarchical navigation. |
| * relations() was added as a replacement to relationTo() |
| * As a consequence of the above two points, navigate() was removed. |
| * Accessible-Action related functions have been removed. QAccessibleInterface |
| subclasses are expected to implement the QAccessibleActionInterface instead. |
| These functions have been removed: |
| QAccessibleInterface::userActionCount, QAccessibleInterface::actionText, |
| QAccessibleInterface::doAction |
| - QAccessibleEvent also loses the child parameter. |
| QAccessibleEvent(Type type, int child) -> QAccessibleEvent(Type type) |
| QAccessibleEvent::child() removed. |
| - QAccessibleActionInterface: |
| * Refactored to be based on action names. All functions have been changed from using |
| int parameters to strings. |
| |
| - QSound has been moved from QtGui to QtMultimedia |
| |
| - QTabletEvent::QTabletEvent does not take a hiResGlobalPos argument anymore, |
| as all coordinates are floating point based now. |
| |
| - QTouchEvent: |
| |
| * The DeviceType enum and deviceType() have been deprecated due to |
| the introduction of QTouchDevice. |
| |
| * The signature of the constructor has changed. It now takes a |
| QTouchDevice pointer instead of just a DeviceType value. |
| |
| * TouchPointState no longer includes TouchPointStateMask and |
| TouchPointPrimary. QTouchEvent::TouchPoint::isPrimary() has |
| been removed. |
| |
| * QWidget *widget() has been removed and is replaced by QObject |
| *target() in order to avoid QWidget dependencies. |
| |
| * QEvent::TouchCancel has been introduced. On systems where it makes |
| sense this event type can be used to differentiate between a |
| regular TouchEnd and abrupt touch sequence cancellations caused by |
| the compositor, for example when a system gesture gets recognized. |
| |
| - QMetaType |
| |
| * Q_DECLARE_METATYPE(Foo*) now requires that Foo is fully defined. In |
| cases where a forward declared type should be used as a metatype, |
| Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that. |
| * Similarly, Q_DECLARE_METATYPE(QSharedPointer<Foo>), and |
| Q_DECLARE_METATYPE(QWeakPointer<Foo>) require Foo to be fully defined. Again |
| though, Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that. |
| |
| - QItemEditorFactory |
| |
| * The signature of the createEditor and valuePropertyName methods |
| have been changed to take arguments of type int instead of QVariant::Type. |
| |
| - QModelIndex/QAbstractItemModel |
| |
| * The integer value that can be stored in a QModelIndex is now of type |
| quintptr to match the size of the internal storage location. |
| * The createIndex() method now only provides the void* and quintptr |
| overloads, making calls with a literal 0 (createIndex(row, col, 0)) |
| ambiguous. Either cast (quintptr(0)) or omit the third argument |
| (to get the void* overload). |
| |
| - QWindowSystemInterface: |
| |
| * The signature of all handleTouchEvent() variants have changed, |
| taking a QTouchDevice* instead of just a DeviceType value. |
| Platform or generic plug-ins have to create and register at least |
| one QTouchDevice before sending the first touch event. |
| |
| * The event type parameter is removed from handleTouchEvent(). |
| |
| - The previously exported function qt_translateRawTouchEvent() has been removed. |
| Use QWindowSystemInterface::handleTouchEvent() instead. |
| |
| - QAbstractEventDispatcher |
| |
| * The signature for the pure-virtual registerTimer() has changed. Subclasses |
| of QAbstractEventDispatcher will need to be updated to reimplement the new |
| pure-virtual 'virtual void registerTimer(int timerId, int interval, |
| Qt::TimerType timerType, QObject *object) = 0;' |
| |
| * QAbstractEventDispatcher::TimerInfo is no longer a QPair<int, int>. It is |
| now a struct with 3 members: struct TimerInfo { int timerId; int interval; |
| Qt::TimerType timerType; }; Reimplementations of |
| QAbstractEventDispatcher::registeredTimers() will need to be updated to pass |
| 3 arguments to the TimerInfo constructor (instead of 2). |
| |
| - QUuid |
| |
| * Removed implicit conversion operator QUuid::operator QString(), instead |
| QUuid::toString() function should be used. |
| |
| - The QHttp, QHttpHeader, QHttpResponseHeader and QHttpRequestHeader classes have |
| been removed, QNetworkAccessManager should be used instead. |
| |
| - The QFtp and QUrlInfo classes are no longer exported, QNetworkAccessManager should be used |
| instead. These classes are available in a separate module, qtftp. |
| |
| - QProcess |
| |
| * On Windows, QProcess::ForwardedChannels will not forward the output of GUI |
| applications anymore, if they do not create a console. |
| |
| - QAbstractSocket's connectToHost() and disconnectFromHost() are now virtual and |
| connectToHostImplementation() and disconnectFromHostImplementation() don't exist. |
| |
| - QTcpServer::incomingConnection() now takes a qintptr instead of an int. |
| |
| - QNetworkConfiguration::bearerName() removed, and bearerTypeName() should be used. |
| |
| - QDir::convertSeparators() (deprecated since Qt 4.2) has been removed. Use |
| QDir::toNativeSeparators() instead. |
| |
| - QIconEngineV2 was merged into QIconEngine |
| You might need to adjust your code if it used a QIconEngine. |
| |
| - QTextCodecPlugin has been removed since it is no longer used. All text codecs |
| are now built into QtCore. |
| |
| - QDir::NoDotAndDotDot is QDir::NoDot|QDir::NoDotDot therefore there is no need |
| to use or check both. |
| |
| - QFSFileEngine, QAbstractFileEngine, QAbstractFileEngineIterator and |
| QAbstractFileEngineHandler were removed from public API and are no longer |
| exported. They may temporarily live as private implementation details, but |
| they may be altogether dropped or otherwise changed at will in the future. |
| |
| - QLocale |
| * toShort(), toUShort(), toInt(), toUInt(), toLongLong() and toULongLong() no |
| longer take a parameter for base, they will only perform localised base 10 |
| conversions. For converting other bases use the QString methods instead. |
| |
| - QSystemLocale has been removed from the public API. |
| |
| - QSqlQueryModel::indexInQuery() is now virtual. See note below under QtSql. |
| |
| - QSqlDriver::subscribeToNotification, unsubscribeFromNotification, |
| subscribedToNotifications, isIdentifierEscaped, and stripDelimiters |
| are now virtual. See note below under QtSql. |
| |
| - qMacVersion() has been removed. Use QSysInfo::macVersion() or |
| QSysInfo::MacintoshVersion instead. |
| |
| - QColorDialog::customColor() now returns a QColor value instead of QRgb. |
| QColorDialog::setCustomColor() and QColorDialog::setStandardColor() now |
| take a QColor value for their second parameter instead of QRgb. |
| |
| - QPageSetupDialog has had the PageSetupDialogOption enum and the api to |
| set and get the enum removed as none of the Options are used any more. |
| |
| - QAbstractPageSetupDialog has been removed. |
| |
| - QThread::terminated() has been removed, since its emission cannot be guaranteed. |
| |
| - QPrintEngine - Removed the PPK_SuppressSystemPrintStatus key as no longer used. |
| |
| - QCoreApplication::Type and QApplication::type() have been removed. These |
| Qt3 legacy application types did not match the application types |
| available in Qt5. Use for example qobject_cast instead to dynamically |
| find out the exact application type. |
| |
| - The following QStyle implementations have been made internal: |
| * QFusionStyle |
| * QGtkStyle |
| * QMacStyle |
| * QWindowsCEStyle |
| * QWindowsMobileStyle |
| * QWindowsStyle |
| * QWindowsVistaStyle |
| * QWindowsXPStyle |
| Instead of creating instances or inheriting these classes directly, use: |
| * QStyleFactory for creating instances of specific styles |
| * QProxyStyle for customizing existing style implementations |
| * QCommonStyle as a base for implementing full custom styles. |
| |
| **************************************************************************** |
| * General * |
| **************************************************************************** |
| |
| General Improvements |
| -------------------- |
| |
| - The directory structure of the qtbase unit-tests has been reworked to |
| more closely match the directory structure of the code under test. |
| Integration tests have been moved to tests/auto/integrationtests. |
| |
| - Qt is compiled with C++11 support enabled by default, provided the compiler |
| supports C++11. Qmake based projects can enable C++11 support explicitly |
| using 'CONFIG+=c++11' in their .pro files. To enable it conditionally, use |
| 'contains(QT_CONFIG,c++11):CONFIG+=c++11'. This will enable C++11 support |
| only if Qt was built with C++11 support. |
| |
| - The Unicode Data and Algorithms has been updated to match the |
| Unicode Standard of version 6.2. For more information see http://www.unicode.org/ |
| |
| - The QLocale data has been updated to CLDR 22.1. |
| For more information see http://cldr.unicode.org/ |
| |
| Third party components |
| ---------------------- |
| |
| - SQLITE_ENABLE_FTS3,SQLITE_ENABLE_FTS3_PARENTHESIS and SQLITE_ENABLE_RTREE |
| flags are now enabled by default on all platforms, for the sqlite3 copy under |
| the 3rdparty directory. |
| |
| Legal |
| ----- |
| |
| - Copyright of Qt has been transferred to Digia Plc. |
| |
| **************************************************************************** |
| * Library * |
| **************************************************************************** |
| |
| QtCore |
| ------ |
| * [QTBUG-12144], [QTBUG-18360] The QChar methods are now able to handle the full range |
| of Unicode codepoints defined by the Unicode Standard of version 6.2. |
| QChar::isPrint() will no longer return a false positives for |
| the Unicode format characters, surrogates, and private use characters. |
| |
| * Drop a bogus QChar::NoCategory enum value; the proper QChar::Other_NotAssigned |
| value is returned for an unassigned codepoints now. |
| |
| * layoutAboutToBeChanged is no longer emitted by QAbstractItemModel::beginMoveRows. |
| layoutChanged is no longer emitted by QAbstractItemModel::endMoveRows. Proxy models |
| should now also connect to (and disconnect from) the rowsAboutToBeMoved and |
| rowsMoved signals. |
| |
| * The QAbstractItemModel::sibling method was made virtual, allowing implementations |
| to optimize based on internal data. |
| |
| * The default value of the property QSortFilterProxyModel::dynamicSortFilter was |
| changed from false to true. |
| |
| * The signature of the virtual QAbstractItemView::dataChanged method has changed to |
| include the roles which have changed. The signature is consistent with the dataChanged |
| signal in the model. |
| |
| * QFileSystemWatcher is now able to return failure in case of errors whilst |
| altering the watchlist in both the singular and QStringList overloads of |
| addPath and removePath. |
| |
| * QString::mid, QString::midRef and QByteArray::mid, if the position passed |
| is equal to the length (that is, right after the last character/byte), |
| now return an empty QString, QStringRef or QByteArray respectively. |
| in Qt 4 they returned a null QString or a null QStringRef. |
| |
| * QString methods toLongLong(), toULongLong(), toLong(), toULong(), toInt(), |
| toUInt(), toShort(), toUShort(), toDouble(), and toFloat() no longer use the |
| default or system locale, they will always use the C locale. This is to |
| guarantee consistent default conversion of strings. For locale-aware conversions |
| use the equivalent QLocale methods. |
| |
| * QDate, QTime, and QDateTime have undergone important behavioural changes: |
| * QDate only implements the Gregorian calendar, the switch to the Julian |
| calendar before 1582 has been removed. This means all QDate methods will |
| return different results for dates prior to 15 October 1582, and there is |
| no longer a gap between 4 October 1582 and 15 October 1582. |
| * QDate::setYMD() is deprecated, use QDate::setDate() instead |
| * Most methods now apply strict validity checks and will return appropriate |
| and consistent values when invalid. For example, QDate::year() will return |
| 0 and QDate::shortMonthName() will return QString(). |
| * Adding days to a null QDate or seconds to a null QTime will no longer return |
| a valid QDate/QTime. |
| * QDate stores the Julian Day as a qint64 extending date support across a |
| more interesting range, see the class documentation for details. |
| * Conversion to YMD form dates is only accurate between to 4800 BCE to |
| 1.4 million CE |
| * The QDate::addDays() and QDateTime::addDays() methods now take a qint64 |
| * The QDate::daysTo() and QDateTime::daysTo() methods now return a qint64 |
| |
| * QTextCodec::codecForCStrings() and QTextCodec::setCodecForCStrings() have both |
| been removed. This was removed due to issues with breaking other code from |
| libraries, creating uncertainty/bugs in using QString easily, and (to a lesser |
| extent) performance issues. |
| |
| * QTextCodec::codecForTr() and QTextCodec::setCodecForTr() have been removed. |
| QObject::trUtf8 and QCoreApplication::Encoding enum are now obsolete. Qt assumes |
| that the source code is encoded in UTF-8. |
| |
| * QFile::setEncodingFunction and QFile::setDecodingFunction are obsolete and do |
| nothing in Qt 5. The QFile::encodeName and QFile::decodeName functions are now |
| hardcoded to operate on QString::fromLocal8Bit and QString::toLocal8Bit |
| only. Therefore, it's still possible to obtain the old behaviour by calling |
| QTextCodec::setCodecForLocale. However, that is not recommended: new code |
| should not make assumptions about the filesystem encoding and older code should |
| have those assumptions removed. |
| |
| * QIntValidator and QDoubleValidator no longer fall back to using the C locale if |
| the requested locale fails to validate the input. |
| |
| * A new set of classes for doing pattern matching with Perl-compatible regular |
| expressions has been added: QRegularExpression, QRegularExpressionMatch and |
| QRegularExpressionMatchIterator. They aim to replace QRegExp with a more |
| powerful and flexible regular expression engine. |
| |
| * QEvent::AccessibilityPrepare, AccessibilityHelp and AccessibilityDescription removed: |
| * The enum values simply didn't make sense in the first place and should simply be dropped. |
| |
| * Filtering of native events (QCoreApplication::setEventFilter, as well as |
| QApplication::x11EventFilter/macEventFilter/qwsEventFilter/winEventFilter) have been replaced |
| with QCoreApplication::installNativeEventFilter and removeNativeEventFilter, |
| for an API much closer to QEvent filtering. Note that the native events that can be |
| filtered this way depend on which QPA backend is chosen, at runtime. On X11, XEvents are |
| not used anymore, and have been replaced with xcb_generic_event_t due to the switch to |
| XCB, which requires porting the application code to XCB as well. |
| |
| * [QTBUG-23529] QHash is now more resilient to a family of denial of service |
| attacks exploiting algorithmic complexity, by supporting two-arguments overloads |
| of the qHash() hashing function. |
| |
| * [QTBUG-4844] QObject::disconnectNotify() is now called when a receiver is destroyed. |
| |
| * QStateMachine |
| - [QTBUG-15430] Added a QStateMachine constructor that takes a ChildMode parameter. |
| - [QTBUG-17975] Delayed event posting now works from secondary threads. |
| - [QTBUG-19789] Signal transitions now work correctly when the sender is in a different thread. |
| - [QTBUG-20362] Property assignments now work as expected with nested, parallel states. |
| - [QTBUG-22931] The root state can now be a parallel state group. |
| - [QTBUG-24307] The initial state is now entered before the started() signal is emitted. |
| - [QTBUG-25959] State entry and exit order is now SCXML spec-compliant. |
| |
| * qDebug(), qWarning(), qCritical(), and qFatal() were changed to macros that track the origin |
| of the message in source code. Whether this and other meta-information is printed can be |
| configured (for the default message handler) by setting the new QT_MESSAGE_PATTERN environment |
| variable. qInstallMsgHandler() has been deprecated, and should be replaced with |
| qInstallMessageHandler(). |
| |
| * QTextBoundaryFinder |
| - [QTBUG-6498] The word start and word end boundaries detection is now |
| unaware of surrounding white space characters. |
| - SoftHyphen enum value has been added to specify a line break opportunity |
| at a soft hyphen (SHY) character. |
| - MandatoryBreak enum value has been added to specify a mandatory (aka "hard") line breaks. |
| - Source-incompatible change: Since the behavior of boundaryReasons() method |
| has been changed a lot, StartWord/EndWord enum values were intentionally replaced |
| with StartOfItem/EndOfItem ones to force the affected code be revised. |
| |
| * Softkeys API was removed. The following functions and enums were removed: |
| - QAction::setSoftKeyRole() |
| - QAction::softKeyRole() |
| - QAction::SoftKeyRole |
| - Qt::WA_MergeSoftkeys |
| - Qt::WA_MergeSoftkeysRecursively |
| - Qt::WindowSoftkeysVisibleHint |
| - Qt::WindowSoftkeysRespondHint |
| |
| * QLocale |
| - [QTBUG-27987] Constructing a QLocale object with the short locale id has been improved. |
| |
| * QObject |
| - Added overloads of connect() to connect using pointers to member function |
| - Added QObject::isSignalConnected() |
| |
| QtGui |
| ----- |
| * Accessibility has been refactored. The hierachy of accessible objects is implemented via |
| proper parent/child functions instead of using navigate which has been deprecated for this purpose. |
| Table and cell interfaces have been added to qaccessible2.h |
| |
| * Touch events and points have been extended to hold additional |
| information like capability flags, point-specific flags, velocity, |
| and raw positions. |
| |
| * A new set of enabler classes have been added, most importantly QWindow, QScreen, |
| QSurfaceFormat, and QOpenGLContext. |
| |
| * Most of the useful QtOpenGL classes have been polished and moved into |
| QtGui. See QOpenGLFramebufferObject, QOpenGLShaderProgram, |
| QOpenGLFunctions, etc. |
| |
| * QOpenGLPaintDevice has been added to be able to use QPainter to render into |
| the currently bound context. |
| |
| * Behavioral change in QImage::fill() on an image with format Format_RGB888: |
| For consistency with RGB32 and other 32-bit formats, function now expects |
| image data in RGB layout as opposed to BGR layout. |
| |
| * Behavioral change in QImage and QPixmap load()/loadFromData() on a non-null image: |
| If load() or loadFromData() fails to load the image (returns false) then |
| the existent image data will be invalidated, so that isNull() is guaranteed |
| to return true in this case. |
| |
| * Behavioral change regarding QPainter fill rules when not using antialiased |
| painting: The fill rules have changed so that the aliased and antialiased |
| coordinate systems match. Earlier there used to be an offset of slightly less |
| than half a pixel when doing sub-pixel rendering, in order to be consistent |
| with the old X11 paint engine. The new behavior should be more predictable and |
| gives the same consistent rounding for images / pixmaps as for paths and |
| rectangle filling. It's possible to still get the old behavior by setting the |
| QPainter::Qt4CompatiblePainting render hint. |
| |
| * Behavioral change regarding QPen: The default QPen constructors now create a |
| 1-width non-cosmetic pen as opposed to a 0-width cosmetic pen. The old |
| behavior can be emulated by setting the QPainter::Qt4CompatiblePainting |
| render hint when painting. |
| |
| QtWidgets |
| --------- |
| * A new style QFusionStyle has been introduced, while QPlastiqueStyle, QCleanlooksStyle, |
| QCDEStyle and QMotifStyle have been removed. The older styles will be |
| made available to applications as a standalone source package. |
| |
| * QInputContext removed as well as related getters and setters on QWidget and QApplication. |
| Input contexts are now platform specific. |
| |
| * QInputDialog::getInteger() has been obsoleted. Use QInputDialog::getInt() instead. |
| |
| * In Qt 4, QStyle::standardIconImplementation() and layoutSpacingImplementation() |
| were introduced instead of making the corresponding methods virtual due to binary |
| compatibility reasons. QStyle::standardIcon() and layoutSpacing() have been made |
| (pure) virtual in Qt 5. |
| |
| * In Qt 4, many QStyleOption subclasses were introduced in order to keep |
| binary compatibility -- QStyleOption was designed to be extended this way, |
| in fact it embeds a version number. In Qt 5 the various QStyleOption*V{2,3,4} |
| classes have been removed, and their members merged into the respective |
| base classes. Those classes were left as typedefs to keep existing code |
| working. Still, some minor adjustements could be necessary, especially in code |
| that uses QStyleOption directly and does not initialize all the members using |
| the proper Qt API: due to the version bump, QStyle will try to use the additional |
| QStyleOption members, which are left default-initialized. |
| |
| * QHeaderView has been refactored and the following functions have been obsoleted: |
| |
| * void setMovable(bool movable) - use void setSectionsMovable(bool movable) instead. |
| |
| * bool isMovable() const - use bool sectionsMovable() const instead. |
| |
| * void setClickable(bool clickable) - use void setSectionsClickable(bool clickable) instead. |
| |
| * bool isClickable() const - use bool sectionsClickable() instead. |
| |
| * void setResizeMode(int logicalindex, ResizeMode mode) - |
| use setSectionResizeMode(logicalindex, mode) instead. |
| |
| * ResizeMode resizeMode(int logicalindex) const - |
| use sectionResizeMode(int logicalindex) instead. |
| |
| * setSortIndicator will no longer emit sortIndicatorChanged when the sort indicator is unchanged. |
| |
| * QDateEdit and QTimeEdit have re-gained a USER property. These were originally removed |
| before Qt 4.7.0, and are re-added for 5.0. This means that the userProperty for |
| those classes are now QDate and QTime respectively, not QDateTime as they have been |
| for the 4.7 and 4.8 releases. |
| |
| * QGraphicsItem and derived classes - Passing a QGraphicsScene in the items constructor |
| is no longer supported. Construct the item without a scene and then call |
| QGraphicsScene::addItem() to add the item to the scene. |
| |
| * QAbstractItemView and derived classes only emit the clicked() signal on left click now, |
| instead of on all mouse clicks. |
| |
| * QProxyModel has been removed. It is deprecated since early Qt 4 versions and replaced |
| by QAbstractProxyModel and related classes. A copy of QProxyModel is available |
| in the UiHelpers library. |
| |
| * The virtual methods QApplication::commitData and QApplication::saveState, used for session |
| management, no longer exist. |
| Connect to the commitDataRequest and saveStateRequest signals instead. |
| The new isSessionSaving() method can be used in the cases where the closeEvent of your |
| window needs to know whether it is being called during shutdown. |
| |
| * [QTBUG-20503] QFileSystemModel no longer masks out write permissions from the permissions |
| returned from permissions() or data(FilePermissions), even if in read-only mode |
| (QFileSystemModel::isReadOnly()). |
| |
| * [QTBUG-158 QTBUG-428 QTBUG-26501] QComboBox::currentText improvements |
| Restored currentText as USER property. |
| New setter setCurrentText(), marked as WRITE method, usable by QItemDelegate and QDataWidgetMapper. |
| New signal currentTextChanged() marked as NOTIFY method. |
| |
| QtNetwork |
| --------- |
| * QHostAddress::isLoopback() API added. Returns true if the address is |
| one of the IP loopback addresses. |
| |
| * QSslCertificate::serialNumber() now always returns the serial number in |
| hexadecimal format. |
| |
| * The openssl network backend now reads the ssl configuration file allowing |
| the use of openssl engines. |
| |
| QtDBus |
| ------ |
| * QtDBus now generates property annotations for the Qt type names |
| in the org.qtproject.QtDBus namespace. When parsing such annotations |
| both the old and new namespaces are accepted. |
| |
| * QtDBus error codes have been updated to be on the org.qtproject.QtDBus.Error |
| namespace. |
| |
| QtConcurrent |
| ------------ |
| |
| * QtConcurrent is no longer in QtCore, but forms its own library now. |
| QMake-based projects can use |
| QT += concurrent |
| to include the new library. |
| |
| * QtConcurrent::Exception has been renamed to QException, and is still in QtCore. |
| Ditto QtConcurrent::UnhandledException. |
| |
| QtOpenGL |
| -------- |
| |
| * Most of the classes in this module (with the notable exception of QGLWidget) |
| now have equivalents in QtGui, along with the naming change QGL -> QOpenGL. |
| The classes in QtOpenGL that have equivalents in QtGui can now be considered |
| deprecated. |
| * QGLPixelBuffer is now deprecated and implemented in terms of a hidden |
| QGLWidget and a QOpenGLFramebufferObject. It is recommended that applications |
| using QGLPixelBuffer for offscreen rendering to a texture switch to using |
| QOpenGLFramebufferObject directly instead, for improved performance. |
| * The default major version of QGLFormat has been changed to 2 to be aligned |
| with QSurfaceFormat. Applications that want to use a different version should |
| explicitly request it using QGLFormat::setVersion(). |
| * void QGLContext::generateFontDisplayLists(const QFont& font, int listBase) |
| and int QGLWidget::fontDisplayListBase(const QFont & fnt, int listBase) |
| which were deprecated in Qt 4 have been removed. |
| * Previously deprecated default value listBase parameter has been removed from |
| both QGLWidget::renderText() functions. |
| * In order to ensure support on more platforms, stricter requirements have been |
| introduced for doing threaded OpenGL. First, you must call makeCurrent() at |
| least once per swapBuffers() call, so that the platform has a chance to |
| synchronize resizes to the OpenGL surface. Second, before doing makeCurrent() |
| or swapBuffers() in a separate thread, you must call |
| QGLContext::moveToThread(QThread *) to explicitly let Qt know in which thread |
| a QGLContext is currently being used. You also need to make sure that the |
| context is not current in the current thread before moving it to a different |
| thread. |
| |
| QtScript |
| -------- |
| * [QTBUG-2124] Added default conversion for long and unsigned long. |
| * [QTBUG-6133] Fixed QScriptContextInfo::functionMetaIndex() for overloaded |
| slots. |
| * [QTBUG-15213] Doc: Added missing properties to the ECMAScript reference. |
| * [QTBUG-15956] Doc: Removed wrong information about Error .stack properties. |
| * [QTBUG-17915] Fixed a crash when a JS property descriptor was only partially |
| defined. |
| * [QTBUG-18188] Fixed a regression that caused contexts created by |
| QScriptEngine::pushContext() to inherit the parent context's scope. |
| * [QTBUG-18201] Suppressed 'LEAK' messages on stderr at application exit. |
| * [QTBUG-20378] Fixed QtScriptTools compilation when some features are disabled. |
| * [QTBUG-20845] Fixed a precision bug in the calculator example. |
| * [QTBUG-21548] Fixed a crash in QScriptEngineDebugger when the QScriptEngine |
| being debugged was deleted. |
| * [QTBUG-21760] Fixed a crash when accessing QObject properties through an |
| activation object. |
| * [QTBUG-21896] Fixed a crash when converting an invalid JS value to a string. |
| * [QTBUG-21993] Fixed a bug that caused QObject wrapper objects created with |
| the PreferExistingWrapperObject option to not be garbage collected, even if |
| the object was not referenced anywhere in the scripting environment. |
| * [QTBUG-22152] Fixed build issue on Solaris. |
| * [QTBUG-23871] Fixed a JIT crash on x86-64 caused by out-of-range branch |
| instructions. |
| * [QTBUG-26261] Fixed a crash when a queued signal handler no longer existed. |
| * [QTBUG-26590] Fixed a bug that caused QObjects with script connections to |
| not be garbage collected as expected. |
| |
| QTestLib |
| -------- |
| * [QTBUG-20615] Autotests can now log test output to multiple destinations |
| and log formats simultaneously. |
| * [QTBUG-21645] QSignalSpy now handles QVariant signal parameters more |
| intuitively; the QVariant value is copied directly, instead of being |
| wrapped inside a new QVariant. This means that calling |
| qvariant_cast<QVariant>() on the QSignalSpy item (to "unwrap" the value) |
| is no longer required (but still works). |
| |
| QtSql |
| ----- |
| QSqlQueryModel/QSqlTableModel/QSqlRelationalTableModel |
| |
| * The dataChanged() signal is now emitted for changes made to an inserted |
| record that has not yet been committed. Previously, dataChanged() was |
| suppressed in this case for OnRowChange and OnFieldChange. This was probably |
| an attempt to avoid trouble if setData() was called while handling |
| primeInsert(). By emitting dataChanged(), we ensure that all views are aware |
| of the change. |
| |
| * While handling primeInsert() signal, the record must be manipulated using |
| the provided reference. Do not attempt to manipulate the records using the |
| model methods setData() or setRecord(). |
| |
| * removeRows() no longer emits extra beforeDelete signal for out of range row. |
| |
| * removeRows() now requires the whole range of targetted rows to be valid |
| before doing anything. Previously, it would remove what it could and |
| ignore the rest of the range. |
| |
| * removeRows(), for OnFieldChange and OnRowChange, allows only 1 row to be |
| removed and only if there are no other changed rows. |
| |
| * setRecord() and insertRecord() |
| -The generated flags from the source record are preserved in the model |
| and determine which fields are included when changes are applied to |
| the database. |
| -Require all fields to map correctly. Previously fields that didn't |
| map were simply ignored. |
| -For OnManualSubmit, insertRecord() no longer leaves behind an empty |
| row if setRecord() fails. |
| -setRecord() now automatically submits for OnRowChange. |
| |
| * QSqlQueryModel::indexInQuery() is now virtual. See |
| QSqlTableModel::indexInQuery() as example of how to implement in a |
| subclass. |
| |
| * QSqlQueryMode::setQuery() emits fewer signals. The modelAboutToBeReset() |
| and modelReset() signals suffice to inform views that they must reinterrogate |
| the model. |
| |
| * QSqlTableModel::select() is now a slot. |
| |
| * QSqlTableModel::selectRow(): This is a new slot that refreshes a single |
| row in the model from the database. |
| |
| * QSqlTableModel edit strategies OnFieldChange/OnRowChange QTBUG-2875 |
| Previously, after changes were submitted in these edit strategies, select() |
| was called which removed and inserted all rows. This ruined navigation |
| in QTableView. Now, with these edit strategies, there is no implicit select() |
| done after committing. This includes deleted rows which remain in |
| the model as blank rows until the application calls select(). Instead, |
| selectRow() is called to refresh only the affected row. |
| |
| * QSqlTableModel::isDirty(): New overloaded method to check whether model |
| has any changes to submit. QTBUG-3108 |
| |
| * QSqlTableModel::setData() and setRecord() no longer revert pending changes |
| that fail upon resubmitting for edit strategies OnFieldChange and OnRowChange. |
| Instead, pending (failed) changes cause new changes inappropriate to the |
| edit strategy to be refused. The application should resolve or revert pending |
| changes. insertRows() and insertRecord() also respect the edit strategy. |
| |
| * QSqlTableModel::setData() and setRecord() in OnRowChange no longer have the |
| side effect of submitting the cached row when invoked on a different row. |
| |
| * QSqlDriver::subscribeToNotification, unsubscribeFromNotification, |
| subscribedToNotifications, isIdentifierEscaped, and stripDelimiters |
| are now virtual. Their xxxImplemenation counterparts have been removed |
| now that QSqlDriver subclasses can reimplement these directly. |
| |
| **************************************************************************** |
| * Database Drivers * |
| **************************************************************************** |
| |
| sqlite |
| ------ |
| * QVariant::Bool type now mapped to integers 0/1 in SQL instead of strings |
| 'true' and 'false'. Sqlite does not have a boolean column type and it is |
| customary to use integer. QTBUG-23895 |
| |
| postgres |
| -------- |
| * the error message returned in QSqlError::text() has the SQLSTATE error code |
| appended in parantheses. |
| |
| **************************************************************************** |
| * Platform Specific Changes * |
| **************************************************************************** |
| |
| The Qt platform implementations have been rewritten as plugins for the Qt |
| Platform Abstraction (QPA): |
| |
| * The platform plugin(s) needs to be bundled when applications are deployed. |
| * The platform implementations are in large parts rewrites. |
| * Q_WS_* defines are no longer defined. Q_OS_* is. |
| * Some platform specific functionality and API is missing from the 5.0 |
| release and will be added later. |
| * Platform spesific functionality will be added in separate modules: |
| QtMacExtras: http://qt.gitorious.org/qtplayground/qtmacextras |
| |
| |
| Qt for Linux/X11 |
| ---------------- |
| |
| |
| Qt for Windows |
| -------------- |
| * Accessibility framework uses IAccessible2 |
| * ANGLE can be used to provide Open GL ES 2.0 (see http://code.google.com/p/angleproject/) |
| |
| Qt for Mac OS X |
| --------------- |
| * Qt now uses Cocoa, the Carbon port has been removed. |
| * The minimum supported OS X version is 10.6. PPC is not supported. |
| * Qt generally supports cross OS X version build and deployment (build |
| on any supported version and deploy to any other). One exception is |
| QtWebkit, which should be built using the 10.6 SDK if you want to target |
| that platform. |
| * The Qt binary installer has been changed to use the Qt installer framework. |
| Qt is now installed into one location instead of being spread out over multiple |
| directories. |
| * The Qt binary installer is built against the 10.7 SDK and does not |
| run on 10.6. |
| * The Clang compiler is used by default. Gcc is available trough the |
| macx-g++* mkspecs. |
| * Build-system support for universal binaries has been removed. The "lipo" |
| command-line tool can be used as a workaround. |
| * Qt now use the raster paint engine on all platforms for drawing widgets. |
| CoreGraphics is still used for printing on Mac. |
| * Support for high-dpi "retina" displays has been added for widgets, |
| OpenGL and QtQuick. |
| * The unified toolbar implementation from Qt 4 has not and will not be ported |
| to Qt 5. This means calling QMainWindow::setUnifiedTitleAndToolBarOnMac has |
| no effect on Qt 5. A replacement API which wraps NSToolbar is available in |
| QtMacExtras. |
| * MacDeployQt plugin deployment has been improved. It will no longer try to |
| deploy all plugins with all dependencies. |
| * Qt has been updated to be in compliance with the Mac App Store sandbox, and |
| will for example no longer try to write settings to files outside the sandbox. |
| * The "qt_menu.nib" issue preventing static/non-framework builds from working |
| has been fixed. |
| |
| |
| Qt for Embedded Linux |
| --------------------- |
| |
| |
| Qt for Windows CE |
| ----------------- |
| |
| |
| **************************************************************************** |
| * Compiler Specific Changes * |
| **************************************************************************** |
| |
| |
| **************************************************************************** |
| * Tools * |
| **************************************************************************** |
| |
| - Build System |
| |
| * Qt has been split into numerous repositories. Configure covers mostly only qtbase's options. |
| * Qt will now install CMake configuration files for all its libraries. |
| |
| - configure |
| |
| * The Mac OS X -dwarf2 configure argument has been removed. DWARF2 is always |
| used on Mac OS X now. |
| * The following options have been added: (-no)-force-asserts, (-no)-strip, (-no)-gui & |
| (-no)-widgets, -device & -device-option, -archdatadir, -libexecdir & -qmldir, |
| and numerous changes relating to specific Qt features and dependencies. |
| * Configure will no longer call "qmake -recursive" by default, as the subsequent |
| build invokes qmake as needed. Use -fully-process to restore the old behavior. |
| |
| - qmake |
| |
| * default_pre.prf is now evaluated per subproject & build pass, symmetrically |
| to default_post.prf. |
| * .qmake.conf files (.qmake.cache equivalent in source tree) are read now. |
| * Project-specific mkspecs/ and features/ directories are supported now. |
| QMAKEPATH and QMAKEFEATURES can be set in .qmake.{config,cache} to specifiy their |
| location, and qmake will find them in the project's top-level directory automatically. |
| * Mixing host and target subprojects is now supported. "default-host" makespec |
| was added; option(host_build) enables its use. |
| * QMAKE_MOC_OPTIONS variable is now available for passing additional parameters |
| to the moc. |
| * The CROSS_COMPILE variable and property can be used to parametrize the device |
| and mingw makespecs. |
| * QMAKE_RPATHLINKDIR (complementary to QMAKE_RPATHDIR) is now understood. |
| * The "aux" TEMPLATE was added. Does not work with vcproj and xcode output files. |
| * The properties QT_INSTALL_ARCHDATA, QT_INSTALL_LIBEXECS, QT_INSTALL_QML, |
| QMAKE_SPEC & QMAKE_XSPEC were added. QT_INSTALL_DEMOS is obsolete. |
| * The following functions have been added: $$sort_depends, $$resolve_depends, |
| $$enumerate_vars, $$reverse, $$val_escape, $$format_number, $$shadowed, |
| $$clean_path, $$system_path, $$shell_path, $$absolute_path, $$relative_path, |
| $$system_quote, $$shell_quote, cache, write_file, touch, mkpath & log. |
| defined can now query variables; $$cat and $$system support more splitting modes. |
| qtCompileTest (available from configure.prf) was added. |
| * Removed qttest_p4.prf. Use CONFIG+=testcase and other flags instead. |
| * QMAKE_SUBSTITUTES can now copy files verbatim. |
| * MSVC desktop builds now use -Zc:wchar_t. |
| * The following variables were added: QMAKESPEC, _QMAKE_CONF_ & _QMAKE_SUPER_CACHE_. |
| * QDBUSXML2CPP_{INTERFACE,ADAPTOR}_{HEADER,SOURCE}_FLAGS are now understood, |
| and DBUS_{INTERFACES,ADAPTORS} support file groups with individual flags now. |
| * QT_PRIVATE and PKGCONFIG_PRIVATE (analogous to LIBS_PRIVATE resp. PKGCONFIG) are now understood. |
| * INSTALLS entries now support copying with subdirectory (e.g., entry.base = $$dirname(PWD)). |
| * Defining QTPLUGIN in dynamically linked projects does not hurt any more. |
| * CONFIG+=import_plugins will now cause plugin imports for QTPLUGIN being auto-generated. |
| * Debug info generation can now be enabled also for release builds (CONFIG+=force_debug_info). |
| * The following CONFIG flags have been deprecated in favor of QT module entries: |
| qtestlib, qdbus, help, designer, uitools, qaxserver & qaxcontainer (the leading 'q' |
| was stripped from the affected modules). |
| * The IN_PWD alias for PWD was deprecated. |
| * QMAKE_{DIST,}CLEAN support normalized path separators now. |
| * CONFIG+=depend_includepath is on by default now. DEPENDPATH is unnecessary in most projects. |
| * Makespecs should be adjusted in the following ways: |
| * The QMAKE_INCDIR_QT, QMAKE_LIBDIR_QT, QMAKE_MOC, QMAKE_UIC, QMAKE_IDC, TEMPLATE & QT |
| variables should not be defined any more. Furthermore, QMAKE_LIBS_X11SM is obsolete. |
| * The qt, warn_on, release, & link_prl CONFIG flags should not be set any more. |
| * The QMAKE_PLATFORM & QMAKE_COMPILER variables should be defined now. |
| Several other variables should be defined by including files from mkspecs/common/. |
| |
| - Assistant |
| |
| - Designer |
| * [QTBUG-8926] [QTBUG-20440] Properties of type QStringList now have |
| translation attributes which apply to all items. |
| They are by default translatable. |
| |
| - Linguist |
| |
| * The integration with Mac OS' document handling was improved |
| * lupdate can now treat other .ts files as sources |
| * lupdate's CODECFORTR is deprecated and will be removed soon. All source code |
| written with Qt is expected to use UTF-8 encoding. |
| |
| - rcc |
| |
| |
| - moc |
| |
| * [QTBUG-20785] The moc now has a -b<file> option to #include an additional |
| file at the beginning of the generated file. |
| * moc is now able to fully understand and expands preprocessor macros. |
| |
| - uic |
| |
| |
| - qtconfig |
| |
| |
| **************************************************************************** |
| * Plugins * |
| **************************************************************************** |
| - The text codecs that were previously plugins are now built into QtCore. |
| - Code using Q_EXPORT_PLUGIN macros will no longer compile. Use |
| Q_PLUGIN_METADATA instead. Note that this requires that the class |
| be default-constructible. |
| |
| **************************************************************************** |
| * Important Behavior Changes * |
| **************************************************************************** |
| |
| - QPointer |
| |
| * The implementation of QPointer has been changed to use QWeakPointer. The |
| old guard mechanism has been removed. This causes a slight change |
| in behavior when using QPointer: |
| |
| * When using QPointer on a QWidget (or a subclass of QWidget), previously |
| the QPointer would be cleared by the QWidget destructor. Now, the QPointer |
| is cleared by the QObject destructor (since this is when QWeakPointers are |
| cleared). Any QPointers tracking a widget will NOT be cleared before the |
| QWidget destructor destroys the children for the widget being tracked. |
| |
| - QUrl |
| |
| * QUrl has been changed to operate only on percent-encoded |
| forms. Fully-decoded forms, where the percent character stands for itself, |
| are no longer possible. For that reason, the getters and setters with |
| "encoded" in the name are deprecated, except for QUrl::toEncoded() and |
| QUrl::fromEncoded(). |
| |
| QUrl now operates in a mode where it decodes as much as it can of the |
| percent-encoding sequences. In addition, the setter methods possess a mode |
| in which a '%' character not part of a percent-encoding sequence will cause |
| the parser to correct the input. Therefore, most software will not require |
| changes to adapt, since the getter methods will continue returning the |
| components in their most-decoded form as they did before and the setter |
| methods will accept input as they did before.. |
| |
| The most notable difference is when dealing with |
| QUrl::toString(). Previously, this function would return percent characters |
| in the URL by themselves. Now, it will return "%25", like |
| QUrl::toEncoded(). |
| |
| - QLibraryInfo |
| |
| * location() always returns paths with normalized separators now. |
| |
| - QVariant |
| |
| * Definition of QVariant::UserType changed. Currently it is the same as |
| QMetaType::User, which means that it points to the first registered custom |
| type, instead of a nonexistent type. |
| |
| - QMetaType |
| |
| * Interpretation of QMetaType::Void was changed. Before, in some cases |
| it was returned as an invalid type id, but sometimes it was used as a valid |
| type (C++ "void"). In Qt5, new QMetaType::UnknownType was introduced to |
| distinguish between these two. QMetaType::UnknownType is an invalid type id |
| signaling that a type is unknown to QMetaType, and QMetaType::Void |
| is a valid type id of C++ void type. The difference will be visible for |
| example in call to QMetaType::typeName(), this function will return null for |
| QMetaType::UnknownType and a pointer to "void" string for |
| QMetaType::Void. |
| Please, notice that QMetaType::UnknownType has value 0, which previously was |
| reserved for QMetaType::Void. |
| |
| - QWidget |
| |
| * No need to set the application name in setWindowTitle() anymore, this is done |
| automatically, on Windows and Unix/X11, provided that the (possibly translated) |
| application display name is set with QGuiApplication::setApplicationDisplayName(). |
| |
| - QMessageBox |
| |
| * The static function QMessageBox::question has changed the default argument |
| for buttons. Before the default was to have an Ok button. That is changed |
| to having a yes and a no button. |
| |
| - qmake & configure |
| |
| * The project file parser has been rewritten from scratch. Invalid syntax will be |
| rejected more aggressively, and interpretation may have changed in some corner cases. |
| * Projects which explicitly set an empty TARGET are considered broken now. |
| * The makespec and .qmake.cache do not see build pass specific variables any more. |
| * load()/include() with a target namespace and infile()/$$fromfile() now start with |
| an entirely pristine context. |
| * Configure's -sysroot and -hostprefix are now handled slightly differently. |
| The QT_INSTALL_... properties are now automatically prefixed with the sysroot; |
| the raw values are available as QT_INSTALL_.../raw and the sysroot as QT_SYSROOT. |
| The new QT_HOST_... properties can be used to refer to the Qt host tools. |
| -no-gcc-sysroot can be used for non-standard sysroot configurations. |
| * The QMAKE_MKSPECS property became unavailable at the command line. Query QT_HOST_DATA instead. |
| * The TEMPLATE_PREFIX variable is gone. Use contains(TEMPLATE, vc.*) instead. |
| * The "default" makespec symlink/directory is gone. Use qmake -query QMAKE_XSPEC instead. |
| * DEPENDPATH does not end up in VPATH any more. Some SOURCES may not be found any more. |
| * Several functions and built-in variables were modified to return normalized paths. |
| * The -(no-)exception flags in configure have been removed. Qt modules are now compiled |
| without exceptions by default, as they do not use them and can neither handle them |
| properly. Qt Core still has exceptions enabled to correctly throw bad_alloc exceptions |
| in our tool classes. |
| Whether code should be compiled with exception support enabled or disabled can be |
| controlled by a CONFIG += exceptions/exceptions_off setting in the .pro file. |
| * The -no/-stl configure options are gone. Qt always uses the STL now. |
| * The -no/-fast configure options are gone. |
| * The -prefix-install configure option is gone. Use -prefix, etc. instead. |
| * The -make option of the Windows configure was renamed to -make-tool. |
| -make now complements -no-make, like in the Unix version. |
| * The object_with_source CONFIG flag was removed. Use object_parallel_to_source instead. |
| * Support for universal binaries on Mac OS has been removed. |
| * The processor architecture handling changed significantly. This affects the -arch & -*-endian |
| configure options, the QT_ARCH qmake variable, and more. |
| * No "make_default" make targets will be generated any more. Use "make_first" instead. |
| * The "qmake" make targets are non-recursive now. Use "qmake_all" to recurse. |
| * load() with paths relative to the current project is not supported any more. |
| Use include() instead. |
| * Persistent qmake properties are not versioned any more. Also, the vendor changed to |
| "QtProject", so old settings are lost. |
| * Support for the Borland toolchain was removed. Numerous obsolete makespecs were culled. |
| * setcepaths.bat is gone. QMake-generated Makefiles are self-contained now. |
| * moc_dir, rcc_dir and some other tool variables are not defined in Qt's .pc files any more; |
| the generic host_bins is defined instead. |
| |