Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QSafeQuickItemChangeListener< Self > Class Template Reference

#include <qquickitemchangelistener_p.h>

Inheritance diagram for QSafeQuickItemChangeListener< Self >:
Collaboration diagram for QSafeQuickItemChangeListener< Self >:

Public Types

template<typename T>
using InDestructorTest = decltype(T::inDestructor)
template<typename T>
using WasDeletedTest = decltype(T::wasDeleted)

Public Member Functions

 ~QSafeQuickItemChangeListener () override
bool baseDeleted (const QObject *caller) const override
QString debugName () const override
Public Member Functions inherited from QQuickItemChangeListener
virtual ~QQuickItemChangeListener ()
virtual void itemGeometryChanged (QQuickItem *, QQuickGeometryChange, const QRectF &)
virtual void itemSiblingOrderChanged (QQuickItem *)
virtual void itemVisibilityChanged (QQuickItem *)
virtual void itemEnabledChanged (QQuickItem *)
virtual void itemOpacityChanged (QQuickItem *)
virtual void itemDestroyed (QQuickItem *)
virtual void itemChildAdded (QQuickItem *, QQuickItem *)
virtual void itemChildRemoved (QQuickItem *, QQuickItem *)
virtual void itemParentChanged (QQuickItem *, QQuickItem *)
virtual void itemRotationChanged (QQuickItem *)
virtual void itemImplicitWidthChanged (QQuickItem *)
virtual void itemImplicitHeightChanged (QQuickItem *)
virtual void itemFocusChanged (QQuickItem *, Qt::FocusReason)
virtual void itemScaleChanged (QQuickItem *)
virtual void itemTransformChanged (QQuickItem *, QQuickItem *)
virtual QQuickAnchorsPrivateanchorPrivate ()
virtual void addSourceItem (QQuickItem *)
virtual void removeSourceItem (QQuickItem *)

Detailed Description

template<typename Self>
class QSafeQuickItemChangeListener< Self >

Helper class using CRTP to add tracking of listeners to a QQuickItemChangeListener implementation. Instantiated with the class that implements the QQuickItemChangeListener interface, like

When destroyed, QSafeQuickItemChangeListener will emit warning messages in {-developer-build} configurations when listeners are still registered. As the listener is at this point partially destroyed, any call to the listener interface might result in undefined behavior, such as use-after-free.

Notifications to registered listeners will in addition check if the listener is already in the destructor, and warn if that's the case. The {baseDeleted} override checks for an inDestructor or wasDeleted data member of the class implementing the QSafeQuickItemChangeListener interface.

Definition at line 146 of file qquickitemchangelistener_p.h.

Member Typedef Documentation

◆ InDestructorTest

template<typename Self>
template<typename T>
using QSafeQuickItemChangeListener< Self >::InDestructorTest = decltype(T::inDestructor)

Definition at line 160 of file qquickitemchangelistener_p.h.

◆ WasDeletedTest

template<typename Self>
template<typename T>
using QSafeQuickItemChangeListener< Self >::WasDeletedTest = decltype(T::wasDeleted)

Definition at line 162 of file qquickitemchangelistener_p.h.

Constructor & Destructor Documentation

◆ ~QSafeQuickItemChangeListener()

template<typename Self>
QSafeQuickItemChangeListener< Self >::~QSafeQuickItemChangeListener ( )
inlineoverride

Definition at line 149 of file qquickitemchangelistener_p.h.

Member Function Documentation

◆ baseDeleted()

template<typename Self>
bool QSafeQuickItemChangeListener< Self >::baseDeleted ( const QObject * caller) const
inlineoverridevirtual

Reimplemented from QQuickItemChangeListener.

Definition at line 164 of file qquickitemchangelistener_p.h.

◆ debugName()

template<typename Self>
QString QSafeQuickItemChangeListener< Self >::debugName ( ) const
inlineoverridevirtual

Reimplemented from QQuickItemChangeListener.

Definition at line 188 of file qquickitemchangelistener_p.h.


The documentation for this class was generated from the following file: