[Development] Suggestion: how to know when object is scheduled for deletion
Filippo Cucchetto
filippocucchetto at gmail.com
Thu May 5 22:21:08 CEST 2016
It depends on your use case but maybe you can simply create a QObject that
has the responsability of deleting your QObjects and emit a signal just
after calling deleteLater.
class MyDeleter : public QObject
{
...
signals:
void aboutToBeDelete(QObject*);
...
void invokeDeleteLater(QObject* other) {
other->deleteLater();
emit aboutToBeDeleted(other)
}
...
}
Depending on your architecture you can make it a singleton, global or
context variable.
After that you can replace everywhere:
objectManagedByCache->deleteLater()
with
myDeleter->invokeDeleteLater(objectManagedByCache).
You can also add this "invokeDeleteLater" directly to the class that
manages your cache.
2016-05-05 21:09 GMT+02:00 Sean Donnelly <Sean.Donnelly at autodesk.com>:
> In our application we maintain a UI Inventory via a named object cache.
> When an object is destroyed we remove it from our cache and when the name
> is changed we also update our cache.
>
>
>
> However when an object is scheduled for deletion via
> QObject::deleteLater() the object remains in our cache until it’s actually
> deleted.
>
>
>
> I have two proposals:
>
>
>
> 1. Could deleteLater() send a signal so that we can update our
> cache immediately and not find that UI object which is about to be deleted.
>
> 2. Could deleteLater() set a property to know the object is in an
> “about to be deleted state”. That way our UI Inventory could be updated to
> ignore these objects.
>
>
>
> Thanks,
>
> Sean
>
>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
>
--
Filippo Cucchetto
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20160505/d19929c9/attachment.html>
More information about the Development
mailing list