mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2024-11-30 07:46:51 +08:00
1122 lines
54 KiB
Plaintext
1122 lines
54 KiB
Plaintext
|
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.
|
||
|
|