diff options
Diffstat (limited to 'plugin/itemregister.cpp')
-rw-r--r-- | plugin/itemregister.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/plugin/itemregister.cpp b/plugin/itemregister.cpp new file mode 100644 index 0000000..f4555f1 --- /dev/null +++ b/plugin/itemregister.cpp @@ -0,0 +1,36 @@ +#include "itemregister.h" +#include <QQuickItem> + +ItemRegister::ItemRegister() +{ + +} + +void ItemRegister::registerItem(QQuickItem* item) +{ + if (!item) + return; + + m_items.append(item); + connect(item, &QQuickItem::destroyed, this, &ItemRegister::onItemDestroyed); +} + +void ItemRegister::unregisterItem(QQuickItem* item) +{ + if (!item) + return; + + disconnect(item, &QQuickItem::destroyed, this, &ItemRegister::onItemDestroyed); + m_items.removeOne(item); +} + +const QList<QQuickItem*> ItemRegister::items() const +{ + return m_items; +} + +void ItemRegister::onItemDestroyed(QObject *obj) +{ + QQuickItem *item=static_cast<QQuickItem*>(obj); + m_items.removeOne(item); +} |