QObject: implement the ### Qt7 for dynamicMetaObject()

As requested in qtbase/5d174877234477a59eb29818d3cfb99fedc3e704.

Change-Id: I5f6568921a25918a5ae3fffdff7c136d3eb455a9
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Thiago Macieira 2024-11-13 16:15:14 -08:00
parent a9fe57fefa
commit 0b044e8b05
3 changed files with 13 additions and 2 deletions

View File

@ -152,6 +152,7 @@ void (*QAbstractDeclarativeData::setWidgetParent)(QObject *, QObject *) = nullpt
QObjectData::~QObjectData() {}
QT7_ONLY(const)
QMetaObject *QObjectData::dynamicMetaObject() const
{
return metaObject->toDynamicMetaObject(q_ptr);

View File

@ -90,9 +90,11 @@ public:
QDynamicMetaObjectData *metaObject;
QBindingStorage bindingStorage;
// ### Qt7: Make this return a const QMetaObject *. You should not mess with
// the metaobjects of existing objects.
#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
const QMetaObject *dynamicMetaObject() const;
#else
QMetaObject *dynamicMetaObject() const;
#endif
#ifdef QT_DEBUG
enum { CheckForParentChildLoopsWarnDepth = 4096 };

View File

@ -469,7 +469,11 @@ struct Q_CORE_EXPORT QDynamicMetaObjectData
virtual ~QDynamicMetaObjectData();
virtual void objectDestroyed(QObject *) { delete this; }
#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
virtual const QMetaObject *toDynamicMetaObject(QObject *) const = 0;
#else
virtual QMetaObject *toDynamicMetaObject(QObject *) = 0;
#endif
virtual int metaCall(QObject *, QMetaObject::Call, int _id, void **) = 0;
};
@ -477,7 +481,11 @@ struct Q_CORE_EXPORT QAbstractDynamicMetaObject : public QDynamicMetaObjectData,
{
~QAbstractDynamicMetaObject();
#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
const QMetaObject *toDynamicMetaObject(QObject *) const override { return this; }
#else
QMetaObject *toDynamicMetaObject(QObject *) override { return this; }
#endif
virtual int createProperty(const char *, const char *) { return -1; }
int metaCall(QObject *, QMetaObject::Call c, int _id, void **a) override
{ return metaCall(c, _id, a); }