- 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.
in Qt4, so these methods return a bool now. If your code used the undocumented
QBool, simply replace it with bool.
-- QMetaType::construct() has been renamed to QMetaType::create().
+- QMetaType:
+ * QMetaType::construct() has been renamed to QMetaType::create().
+ * QMetaType::unregisterType() has been removed.
+
+- 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.
- 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,
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()
- relationTo(int child, const QAccessibleInterface *other, int otherChild) ->
- relationTo(const QAccessibleInterface *other)
+ * 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:
* 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
- * It is no longer possible to use Q_DECLARE_METATYPE(Foo*) where Foo is only
- forward declared - it must be fully defined.
+ * 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
- 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.
* 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 *
****************************************************************************
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.
+
+* QIntValidator and QDoubleValidator no longer fall back to using the C locale if
+ the requested locale fails to validate the input.
QtGui
-----
QtWidgets
---------
-* QWidget::setInputContext() and QApplication::setInputContext() are removed.
+* 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
* [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.
****************************************************************************
* Database Drivers *
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.
+
+- 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