diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-07-20 11:02:31 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-25 13:33:05 +0200 |
commit | 5fd8dd19ea28e2bd9cc8ce88321a401206a88f89 (patch) | |
tree | 2fc3748fd9ca85521c23da139428c69324f63e43 | |
parent | 790aca0ea1bbd33a8ff29c83c0ab0bd968304f03 (diff) |
QtWidgets: use nullary version of qRegisterMetaType<T>("T")
Using qRegisterMetaType<T>() has the advantage that multiple calls
during a program run are much more efficient, since an inlined
atomic is used to store the result. It also ensures that
Q_DECLARE_METATYPE(T) has been used, whereas qRegisterMetaType<T>("T")
will happily register anything.
Had to add Q_DECLARE_METATYPE to QFileInfo, for
QList<QPair<QString,QFileInfo>> of QFileSystemModel to work with
the partial specialisations of Q_DECLARE_METATYPE for QList, QPair.
In order to synchronize this change with other modules that did
their own Q_DECLARE_METATYPE(QFileInfo), a sync macro is defined
that can be tested in other modules, and will later be removed again.
Change-Id: I3004664e07e64cd885d5a03a57ff4e4379804aec
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | src/corelib/io/qfileinfo.h | 4 | ||||
-rw-r--r-- | src/widgets/dialogs/qfilesystemmodel.cpp | 2 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp | 1 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h index 6b1f79ab3c..bccecd695e 100644 --- a/src/corelib/io/qfileinfo.h +++ b/src/corelib/io/qfileinfo.h @@ -45,6 +45,7 @@ #include <QtCore/qfile.h> #include <QtCore/qlist.h> #include <QtCore/qshareddata.h> +#include <QtCore/qmetatype.h> QT_BEGIN_HEADER @@ -156,6 +157,9 @@ typedef QList<QFileInfo> QFileInfoList; QT_END_NAMESPACE +Q_DECLARE_METATYPE(QFileInfo) +#define QT_QFILEINFO_METATYPE_DEFINED + QT_END_HEADER #endif // QFILEINFO_H diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index ff92adb5e6..d4dede2889 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -1937,7 +1937,7 @@ void QFileSystemModelPrivate::_q_resolvedName(const QString &fileName, const QSt void QFileSystemModelPrivate::init() { Q_Q(QFileSystemModel); - qRegisterMetaType<QList<QPair<QString,QFileInfo> > >("QList<QPair<QString,QFileInfo> >"); + qRegisterMetaType<QList<QPair<QString,QFileInfo> > >(); q->connect(&fileInfoGatherer, SIGNAL(newListOfFiles(QString,QStringList)), q, SLOT(_q_directoryChanged(QString,QStringList))); q->connect(&fileInfoGatherer, SIGNAL(updates(QString,QList<QPair<QString,QFileInfo> >)), diff --git a/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp b/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp index f01b3679b4..d3dd29fa38 100644 --- a/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp +++ b/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp @@ -130,7 +130,6 @@ void tst_QFileIconProvider::iconType() QVERIFY(!provider.icon(type).isNull()); } -Q_DECLARE_METATYPE(QFileInfo) void tst_QFileIconProvider::iconInfo_data() { QTest::addColumn<QFileInfo>("info"); |