diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 5e354b3f41..c468c0b45d 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -1706,7 +1706,8 @@ inline int qRegisterMetaTypeStreamOperators() } QT_END_NAMESPACE \ /**/ -#define Q_DECLARE_METATYPE(TYPE) \ +#define Q_DECLARE_METATYPE(TYPE) Q_DECLARE_METATYPE_IMPL(TYPE) +#define Q_DECLARE_METATYPE_IMPL(TYPE) \ QT_BEGIN_NAMESPACE \ template <> \ struct QMetaTypeId< TYPE > \ diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 0e3ea86165..959c79ed60 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -278,15 +278,21 @@ void tst_QMetaType::threadSafety() namespace TestSpace { struct Foo { double d; }; - + struct QungTfu {}; } Q_DECLARE_METATYPE(TestSpace::Foo) +#define ADD_TESTSPACE(F) TestSpace::F +Q_DECLARE_METATYPE(ADD_TESTSPACE(QungTfu)) + void tst_QMetaType::namespaces() { TestSpace::Foo nf = { 11.12 }; QVariant v = QVariant::fromValue(nf); QCOMPARE(qvariant_cast(v).d, 11.12); + + int qungTfuId = qRegisterMetaType(); + QCOMPARE(QMetaType::typeName(qungTfuId), "TestSpace::QungTfu"); } void tst_QMetaType::qMetaTypeId()