diff options
Diffstat (limited to 'src/widgets/itemviews/qtreewidget.cpp')
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 90 |
1 files changed, 50 insertions, 40 deletions
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index 3fa8a7e1b9..8e46a0efbe 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -5,7 +5,6 @@ #include <qheaderview.h> #include <qpainter.h> -#include <qitemdelegate.h> #include <qstack.h> #include <qdebug.h> #include <private/qtreewidget_p.h> @@ -2301,37 +2300,43 @@ QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item) #endif // QT_NO_DATASTREAM -void QTreeWidgetPrivate::_q_emitItemPressed(const QModelIndex &index) +void QTreeWidgetPrivate::clearConnections() +{ + for (const QMetaObject::Connection &connection : connections) + QObject::disconnect(connection); +} + +void QTreeWidgetPrivate::emitItemPressed(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemPressed(item(index), index.column()); } -void QTreeWidgetPrivate::_q_emitItemClicked(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemClicked(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemClicked(item(index), index.column()); } -void QTreeWidgetPrivate::_q_emitItemDoubleClicked(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemDoubleClicked(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemDoubleClicked(item(index), index.column()); } -void QTreeWidgetPrivate::_q_emitItemActivated(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemActivated(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemActivated(item(index), index.column()); } -void QTreeWidgetPrivate::_q_emitItemEntered(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemEntered(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemEntered(item(index), index.column()); } -void QTreeWidgetPrivate::_q_emitItemChanged(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemChanged(const QModelIndex &index) { Q_Q(QTreeWidget); QTreeWidgetItem *indexItem = item(index); @@ -2339,19 +2344,19 @@ void QTreeWidgetPrivate::_q_emitItemChanged(const QModelIndex &index) emit q->itemChanged(indexItem, index.column()); } -void QTreeWidgetPrivate::_q_emitItemExpanded(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemExpanded(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemExpanded(item(index)); } -void QTreeWidgetPrivate::_q_emitItemCollapsed(const QModelIndex &index) +void QTreeWidgetPrivate::emitItemCollapsed(const QModelIndex &index) { Q_Q(QTreeWidget); emit q->itemCollapsed(item(index)); } -void QTreeWidgetPrivate::_q_emitCurrentItemChanged(const QModelIndex ¤t, +void QTreeWidgetPrivate::emitCurrentItemChanged(const QModelIndex ¤t, const QModelIndex &previous) { Q_Q(QTreeWidget); @@ -2360,7 +2365,7 @@ void QTreeWidgetPrivate::_q_emitCurrentItemChanged(const QModelIndex ¤t, emit q->currentItemChanged(currentItem, previousItem); } -void QTreeWidgetPrivate::_q_sort() +void QTreeWidgetPrivate::sort() { if (sortingEnabled) { int column = header->sortIndicatorSection(); @@ -2369,7 +2374,7 @@ void QTreeWidgetPrivate::_q_sort() } } -void QTreeWidgetPrivate::_q_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) +void QTreeWidgetPrivate::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { Q_Q(QTreeWidget); QModelIndexList indices = selected.indexes(); @@ -2389,8 +2394,8 @@ void QTreeWidgetPrivate::_q_selectionChanged(const QItemSelection &selected, con emit q->itemSelectionChanged(); } -void QTreeWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft, - const QModelIndex &bottomRight) +void QTreeWidgetPrivate::dataChanged(const QModelIndex &topLeft, + const QModelIndex &bottomRight) { if (sortingEnabled && topLeft.isValid() && bottomRight.isValid() && !treeModel()->sortPendingTimer.isActive()) { @@ -2448,7 +2453,7 @@ void QTreeWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft, whether sorting is enabled. \sa QTreeWidgetItem, QTreeWidgetItemIterator, QTreeView, - {Model/View Programming}, {Settings Editor Example} + {Model/View Programming} */ /*! @@ -2570,31 +2575,34 @@ void QTreeWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft, QTreeWidget::QTreeWidget(QWidget *parent) : QTreeView(*new QTreeWidgetPrivate(), parent) { + Q_D(QTreeWidget); QTreeView::setModel(new QTreeModel(1, this)); - connect(this, SIGNAL(pressed(QModelIndex)), - SLOT(_q_emitItemPressed(QModelIndex))); - connect(this, SIGNAL(clicked(QModelIndex)), - SLOT(_q_emitItemClicked(QModelIndex))); - connect(this, SIGNAL(doubleClicked(QModelIndex)), - SLOT(_q_emitItemDoubleClicked(QModelIndex))); - connect(this, SIGNAL(activated(QModelIndex)), - SLOT(_q_emitItemActivated(QModelIndex))); - connect(this, SIGNAL(entered(QModelIndex)), - SLOT(_q_emitItemEntered(QModelIndex))); - connect(this, SIGNAL(expanded(QModelIndex)), - SLOT(_q_emitItemExpanded(QModelIndex))); - connect(this, SIGNAL(collapsed(QModelIndex)), - SLOT(_q_emitItemCollapsed(QModelIndex))); - connect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), - this, SLOT(_q_emitCurrentItemChanged(QModelIndex,QModelIndex))); - connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(_q_emitItemChanged(QModelIndex))); - connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(_q_dataChanged(QModelIndex,QModelIndex))); - connect(model(), SIGNAL(columnsRemoved(QModelIndex,int,int)), - this, SLOT(_q_sort())); - connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(_q_selectionChanged(QItemSelection,QItemSelection))); + d->connections = { + QObjectPrivate::connect(this, &QTreeWidget::pressed, + d, &QTreeWidgetPrivate::emitItemPressed), + QObjectPrivate::connect(this, &QTreeWidget::clicked, + d, &QTreeWidgetPrivate::emitItemClicked), + QObjectPrivate::connect(this, &QTreeWidget::doubleClicked, + d, &QTreeWidgetPrivate::emitItemDoubleClicked), + QObjectPrivate::connect(this, &QTreeWidget::activated, + d, &QTreeWidgetPrivate::emitItemActivated), + QObjectPrivate::connect(this, &QTreeWidget::entered, + d, &QTreeWidgetPrivate::emitItemEntered), + QObjectPrivate::connect(this, &QTreeWidget::expanded, + d, &QTreeWidgetPrivate::emitItemExpanded), + QObjectPrivate::connect(this, &QTreeWidget::collapsed, + d, &QTreeWidgetPrivate::emitItemCollapsed), + QObjectPrivate::connect(model(), &QAbstractItemModel::dataChanged, + d, &QTreeWidgetPrivate::emitItemChanged), + QObjectPrivate::connect(model(), &QAbstractItemModel::dataChanged, + d, &QTreeWidgetPrivate::dataChanged), + QObjectPrivate::connect(model(), &QAbstractItemModel::columnsRemoved, + d, &QTreeWidgetPrivate::sort), + QObjectPrivate::connect(selectionModel(), &QItemSelectionModel::currentChanged, + d, &QTreeWidgetPrivate::emitCurrentItemChanged), + QObjectPrivate::connect(selectionModel(), &QItemSelectionModel::selectionChanged, + d, &QTreeWidgetPrivate::selectionChanged) + }; header()->setSectionsClickable(false); } @@ -2604,6 +2612,8 @@ QTreeWidget::QTreeWidget(QWidget *parent) QTreeWidget::~QTreeWidget() { + Q_D(QTreeWidget); + d->clearConnections(); } /* @@ -3119,7 +3129,7 @@ void QTreeWidget::setSelectionModel(QItemSelectionModel *selectionModel) QTreeView::setSelectionModel(selectionModel); QItemSelection newSelection = selectionModel->selection(); if (!newSelection.isEmpty()) - d->_q_selectionChanged(newSelection, QItemSelection()); + d->selectionChanged(newSelection, QItemSelection()); } /*! |