summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp34
-rw-r--r--src/gui/itemmodels/qstandarditemmodel_p.h1
2 files changed, 14 insertions, 21 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index e965045524..1d6e2924b1 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -91,23 +91,6 @@ public:
/*!
\internal
*/
-QStandardItemPrivate::~QStandardItemPrivate()
-{
- QVector<QStandardItem*>::const_iterator it;
- for (it = children.constBegin(); it != children.constEnd(); ++it) {
- QStandardItem *child = *it;
- if (child)
- child->d_func()->setModel(0);
- delete child;
- }
- children.clear();
- if (parent && model)
- parent->d_func()->childDeleted(q_func());
-}
-
-/*!
- \internal
-*/
QPair<int, int> QStandardItemPrivate::position() const
{
if (QStandardItem *par = parent) {
@@ -340,9 +323,6 @@ QStandardItemModelPrivate::QStandardItemModelPrivate()
*/
QStandardItemModelPrivate::~QStandardItemModelPrivate()
{
- delete itemPrototype;
- qDeleteAll(columnHeaderItems);
- qDeleteAll(rowHeaderItems);
}
/*!
@@ -780,6 +760,15 @@ QStandardItem &QStandardItem::operator=(const QStandardItem &other)
*/
QStandardItem::~QStandardItem()
{
+ Q_D(QStandardItem);
+ for (QStandardItem *child : qAsConst(d->children)) {
+ if (child)
+ child->d_func()->setModel(0);
+ delete child;
+ }
+ d->children.clear();
+ if (d->parent && d->model)
+ d->parent->d_func()->childDeleted(this);
}
/*!
@@ -2116,6 +2105,11 @@ QStandardItemModel::QStandardItemModel(QStandardItemModelPrivate &dd, QObject *p
*/
QStandardItemModel::~QStandardItemModel()
{
+ Q_D(QStandardItemModel);
+ delete d->itemPrototype;
+ qDeleteAll(d->columnHeaderItems);
+ qDeleteAll(d->rowHeaderItems);
+ d->root.reset();
}
/*!
diff --git a/src/gui/itemmodels/qstandarditemmodel_p.h b/src/gui/itemmodels/qstandarditemmodel_p.h
index fbba93b93a..516cce8613 100644
--- a/src/gui/itemmodels/qstandarditemmodel_p.h
+++ b/src/gui/itemmodels/qstandarditemmodel_p.h
@@ -105,7 +105,6 @@ public:
q_ptr(0),
lastIndexOf(2)
{ }
- virtual ~QStandardItemPrivate();
inline int childIndex(int row, int column) const {
if ((row < 0) || (column < 0)