579ea489a4
This allows QVariant/QMetaType software (such as QtDeclarative) to deal with smart pointers in a similar way to how they can deal with naked pointers (accessing properties etc). This also adds a requirement that T be fully defined when QSharedPointer<T> is inserted into a QVariant. Change-Id: I29e12b8a6aa5f4aadbd62f92b89bc238f64b5725 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
716 lines
31 KiB
Plaintext
716 lines
31 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 *
|
|
****************************************************************************
|
|
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- qIsDetached<> has been removed without replacement.
|
|
|
|
- QMetaType:
|
|
* QMetaType::construct() has been renamed to QMetaType::create().
|
|
* QMetaType::unregisterType() has been removed.
|
|
|
|
- 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))"
|
|
|
|
- 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 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.
|
|
|
|
- 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.
|
|
|
|
- qmake
|
|
* 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.
|
|
* 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.
|
|
|
|
- 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.
|
|
|
|
****************************************************************************
|
|
* 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.
|
|
|
|
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.
|
|
|
|
|
|
****************************************************************************
|
|
* Library *
|
|
****************************************************************************
|
|
|
|
QtCore
|
|
------
|
|
* 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 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.
|
|
|
|
* [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.
|
|
|
|
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.
|
|
|
|
QtWidgets
|
|
---------
|
|
* 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, 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 - 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.
|
|
|
|
* 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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
QtScript
|
|
--------
|
|
|
|
|
|
QTestLib
|
|
--------
|
|
* [QTBUG-20615] Autotests can now log test output to multiple destinations
|
|
and log formats simultaneously.
|
|
|
|
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()
|
|
-Only use fields where generated flag is set to true. This is
|
|
is consistent with the meaning of the flag.
|
|
-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::selectRow(): This is a new method 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
|
|
|
|
****************************************************************************
|
|
* Platform Specific Changes *
|
|
****************************************************************************
|
|
|
|
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 for Embedded Linux
|
|
---------------------
|
|
|
|
|
|
Qt for Windows CE
|
|
-----------------
|
|
|
|
|
|
****************************************************************************
|
|
* Compiler Specific Changes *
|
|
****************************************************************************
|
|
|
|
|
|
****************************************************************************
|
|
* Tools *
|
|
****************************************************************************
|
|
|
|
- Build System
|
|
|
|
* Remove qttest_p4.prf file. From now on we should explicitly enable the
|
|
things from it which we want. Autotest .pro files should stop using
|
|
'load(qttest_p4)' and start using 'CONFIG+=testcase' instead.
|
|
|
|
- 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
|
|
|
|
- rcc
|
|
|
|
|
|
- moc
|
|
|
|
* [QTBUG-20785] The moc now has a -b<file> option to #include an additional
|
|
file at the beginning of the generated file.
|
|
|
|
|
|
- uic
|
|
|
|
|
|
- uic3
|
|
|
|
|
|
- qmake
|
|
|
|
* QMAKE_MOC_OPTIONS variable is now available for passing additional parameters
|
|
to the moc.
|
|
|
|
|
|
- configure
|
|
|
|
* The Mac OS X -dwarf2 configure argument has been removed. DWARF2 is always
|
|
used on Mac OS X now.
|
|
|
|
- qtconfig
|
|
|
|
|
|
****************************************************************************
|
|
* Plugins *
|
|
****************************************************************************
|
|
- The text codecs that were previously plugins are now built into QtCore.
|
|
|
|
****************************************************************************
|
|
* 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().
|
|
|
|
- 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.
|
|
|
|
|
|
- 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.
|