diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 36505fae62f..42d2abbb982 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1288,6 +1288,17 @@ QString QObject::objectName() const return d->extraData ? d->extraData->objectName : QString(); } +/*! + \internal + Only use if you know nothing can be bound yet. Usually used for + internal objects that do get names. +*/ +void QObjectPrivate::setObjectNameWithoutBindings(const QString &name) +{ + ensureExtraData(); + extraData->objectName.setValueBypassingBindings(name); +} + /*! \fn void QObject::setObjectName(const QString &name) Sets the object's name to \a name. diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index 0ab9bf02edf..0a729acb82b 100644 --- a/src/corelib/kernel/qobject_p.h +++ b/src/corelib/kernel/qobject_p.h @@ -104,6 +104,7 @@ public: if (!extraData) extraData = new ExtraData(this); } + void setObjectNameWithoutBindings(const QString &name); typedef void (*StaticMetaCallFunction)(QObject *, QMetaObject::Call, int, void **); struct Connection; diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index ae280e3671b..723bd4b0da4 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -126,7 +126,9 @@ QAdoptedThread::QAdoptedThread(QThreadData *data) // we are the main thread QCoreApplicationPrivate::theMainThread.storeRelease(this); QCoreApplicationPrivate::theMainThreadId.storeRelaxed(id); - setObjectName(u"Qt mainThread"_s); + + // bypass the bindings because nothing can be listening yet + d_func()->setObjectNameWithoutBindings(u"Qt mainThread"_s); } // thread should be running and not finished for the lifetime