diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 538cca151..94200bfe5 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -137,15 +137,20 @@ Diagram::~Diagram() delete m_event_interface; // list removable items - QList deletable_items; - for(QGraphicsItem *qgi : items()) + QVector deletable_items; + for(const auto &qgi : items()) { - if (qgi -> parentItem()) continue; - if (qgraphicsitem_cast(qgi)) continue; - deletable_items << qgi; + if (qgi->parentItem()) + continue; + if (qgraphicsitem_cast(qgi)) + continue; + deletable_items.append(qgi); + } + for (const auto &item : qAsConst(deletable_items)) + { + removeItem(item); + delete item; } - - qDeleteAll (deletable_items); } /** diff --git a/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.h b/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.h index 2bc627318..c840bb3d2 100644 --- a/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.h +++ b/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.h @@ -84,7 +84,7 @@ class QetGraphicsHeaderItem : public QGraphicsObject QRect m_current_rect; QRectF m_bounding_rect; - QAbstractItemModel *m_model = nullptr; + QPointer m_model; QVector m_sections_minimum_width, diff --git a/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.cpp b/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.cpp index 9c4de8b92..389058f11 100644 --- a/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.cpp +++ b/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.cpp @@ -185,7 +185,7 @@ void QetGraphicsTableItem::setModel(QAbstractItemModel *model) this, &QetGraphicsTableItem::modelReseted); } m_model = model; - m_header_item->setModel(model); + m_header_item->setModel(m_model); setUpColumnAndRowMinimumSize(); adjustSize(); @@ -210,7 +210,7 @@ void QetGraphicsTableItem::setModel(QAbstractItemModel *model) */ QAbstractItemModel *QetGraphicsTableItem::model() const { - return m_model; + return m_model.data(); } /** @@ -599,7 +599,7 @@ QDomElement QetGraphicsTableItem::toXml(QDomDocument &dom_document) const { //Add model auto dom_model = dom_document.createElement("model"); - auto project_db_model = static_cast(m_model); + auto project_db_model = static_cast(m_model.data()); dom_model.appendChild(project_db_model->toXml(dom_document)); dom_table.appendChild(dom_model); diff --git a/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h b/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h index c7cf58473..25ccf5d04 100644 --- a/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h +++ b/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h @@ -123,7 +123,7 @@ class QetGraphicsTableItem : public QetGraphicsItem void previousTableDisplayRowChanged(); void removeUselessNextTable(bool recursive = true); - QAbstractItemModel *m_model= nullptr; + QPointer m_model; QVector m_minimum_column_width; int