13c57d0f68
Checks if model has any changes to submit. Includes new test covering isDirty(index) as well the new overloaded function. Task-number: QTBUG-3108 Change-Id: I0ccbda45d5d9f06434cf1e1c037a9efb76d0cc37 Reviewed-by: Honglei Zhang <honglei.zhang@nokia.com>
548 lines
23 KiB
Plaintext
548 lines
23 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 *
|
|
****************************************************************************
|
|
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- 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 class is no longer exported, QNetworkAccessManager should be used
|
|
instead.
|
|
|
|
- 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.
|
|
|
|
- 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 QSql.
|
|
|
|
- qMacVersion() has been removed. Use QSysInfo::macVersion() or
|
|
QSysInfo::MacintoshVersion instead.
|
|
|
|
****************************************************************************
|
|
* 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.
|
|
|
|
Third party components
|
|
----------------------
|
|
|
|
-
|
|
|
|
|
|
****************************************************************************
|
|
* 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,
|
|
QCoreApplication::Encoding value CodecForTr is now obsolete, use
|
|
DefaultCodec instead. For reasoning, see the codecForCStrings() removal above.
|
|
|
|
* 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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
QtOpenGL
|
|
--------
|
|
|
|
QtScript
|
|
--------
|
|
|
|
|
|
QTestLib
|
|
--------
|
|
* [QTBUG-20615] Autotests can now log test output to multiple destinations
|
|
and log formats simultaneously.
|
|
|
|
QtSql
|
|
-----
|
|
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.
|
|
|
|
* 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.
|
|
|
|
* QSqlQueryModel::indexInQuery() is now virtual. See
|
|
QSqlTableModel::indexInQuery() as example of how to implement in a
|
|
subclass.
|
|
|
|
* 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
|
|
|
|
****************************************************************************
|
|
* Database Drivers *
|
|
****************************************************************************
|
|
|
|
|
|
****************************************************************************
|
|
* Platform Specific Changes *
|
|
****************************************************************************
|
|
|
|
Qt for Linux/X11
|
|
----------------
|
|
|
|
|
|
Qt for Windows
|
|
--------------
|
|
* Accessibility framework uses IAccessible2
|
|
|
|
|
|
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
|
|
|
|
|
|
- qtconfig
|
|
|
|
|
|
****************************************************************************
|
|
* Plugins *
|
|
****************************************************************************
|
|
- The text codecs that were previously plugins are now built into QtCore.
|
|
|
|
****************************************************************************
|
|
* Important Behavior Changes *
|
|
****************************************************************************
|
|
|
|
- QPointer
|
|
|
|
* QPointer itself is now deprecated, and the implementation of QPointer
|
|
has been changed to use QWeakPointer. The old guard mechanism has been
|
|
removed. This causes two slight changes 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.
|
|
|
|
* When constructing a QSharedPointer to take ownership of an object after a
|
|
QPointer is already tracking the object. Previously, the shared pointer
|
|
construction would not be affected by the QPointer, but now that QPointer
|
|
is implemented using QWeakPoiner, constructing the QSharedPointer will
|
|
cause an abort().
|
|
|
|
|
|
- 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.
|
|
|
|
|
|
- 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.
|