(!m_qpointer)
returns true when you delete the object it is pointing to, because of this operator defined in qpointer.h
:
inline operator T*() const
{ return static_cast<T*>(const_cast<QObject*>(o)); }
It returns the pointer it is guarding. If it has been deleted, then it will be null.
isNull()
returns true if the pointer it is guarding is null:
inline bool isNull() const
{ return !o; }
Now I'm not sure what do you mean by I check the value of the QPointer, and it is not NULL. Why should it be null? The QPointer
object should still be a valid object even after deleting the pointer it is guarding.