diff --git a/src/corelib/compat/removed_api.cpp b/src/corelib/compat/removed_api.cpp index b856f6b495b..64c3e9ccff4 100644 --- a/src/corelib/compat/removed_api.cpp +++ b/src/corelib/compat/removed_api.cpp @@ -205,6 +205,15 @@ QCalendar::QCalendar(QStringView name) QCalendar::QCalendar(QLatin1String name) : QCalendar(QAnyStringView{name}) {} + +#include "qobject.h" + +void QObject::setObjectName(const QString &name) +{ + setObjectName(name); +} + + #include "qversionnumber.h" QT_WARNING_PUSH @@ -229,5 +238,6 @@ QT_WARNING_POP // #include // // implement removed functions from qotherheader.h +// order sections alphabetically to reduce chances of merge conflicts #endif // QT_CORE_REMOVED_SINCE(6, 4) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 61023530b5c..2a7948b1e16 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1265,10 +1265,11 @@ QString QObject::objectName() const return d->extraData ? d->extraData->objectName : QString(); } -/* +/*! + \fn void QObject::setObjectName(const QString &name) Sets the object's name to \a name. */ -void QObject::setObjectName(const QString &name) +void QObject::doSetObjectName(const QString &name) { Q_D(QObject); @@ -1282,6 +1283,24 @@ void QObject::setObjectName(const QString &name) } } +/*! + \overload + \since 6.4 +*/ +void QObject::setObjectName(QAnyStringView name) +{ + Q_D(QObject); + + d->ensureExtraData(); + + d->extraData->objectName.removeBindingUnlessInWrapper(); + + if (d->extraData->objectName.value() != name) { + d->extraData->objectName.setValueBypassingBindings(name.toString()); + d->extraData->objectName.notify(); // also emits a signal + } +} + QBindable QObject::bindableObjectName() { Q_D(QObject); diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 67b751935eb..4d7faaf013f 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -145,7 +145,12 @@ public: #endif // QT_NO_TRANSLATION QString objectName() const; +#if QT_CORE_REMOVED_SINCE(6, 4) void setObjectName(const QString &name); +#endif + Q_WEAK_OVERLOAD + void setObjectName(const QString &name) { doSetObjectName(name); } + void setObjectName(QAnyStringView name); QBindable bindableObjectName(); inline bool isWidgetType() const { return d_ptr->isWidget; } @@ -449,6 +454,7 @@ protected: friend class QThreadData; private: + void doSetObjectName(const QString &name); Q_DISABLE_COPY(QObject) Q_PRIVATE_SLOT(d_func(), void _q_reregisterTimers(void *))