diff options
Diffstat (limited to 'src/widgets/itemviews/qtreewidget.cpp')
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 120 |
1 files changed, 65 insertions, 55 deletions
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index 3fe843895c..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> @@ -627,7 +626,7 @@ void QTreeModel::ensureSorted(int column, Qt::SortOrder order, else if (oldRow > otherRow && newRow <= otherRow) ++sorting[j].second; } - for (int k = 0; k < newPersistentIndexes.count(); ++k) { + for (int k = 0; k < newPersistentIndexes.size(); ++k) { QModelIndex pi = newPersistentIndexes.at(k); if (pi.parent() != parent) continue; @@ -827,7 +826,7 @@ void QTreeModel::sortItems(QList<QTreeWidgetItem*> *items, int column, Qt::SortO return; // store the original order of indexes - QList<QPair<QTreeWidgetItem *, int>> sorting(items->count()); + QList<QPair<QTreeWidgetItem *, int>> sorting(items->size()); for (int i = 0; i < sorting.size(); ++i) { sorting[i].first = items->at(i); sorting[i].second = i; @@ -1396,7 +1395,7 @@ QTreeWidgetItem::QTreeWidgetItem(int type) : rtti(type), d(new QTreeWidgetItemPr QTreeWidgetItem::QTreeWidgetItem(const QStringList &strings, int type) : rtti(type), d(new QTreeWidgetItemPrivate(this)) { - for (int i = 0; i < strings.count(); ++i) + for (int i = 0; i < strings.size(); ++i) setText(i, strings.at(i)); } @@ -1432,7 +1431,7 @@ QTreeWidgetItem::QTreeWidgetItem(QTreeWidget *treeview, int type) QTreeWidgetItem::QTreeWidgetItem(QTreeWidget *treeview, const QStringList &strings, int type) : rtti(type), d(new QTreeWidgetItemPrivate(this)) { - for (int i = 0; i < strings.count(); ++i) + for (int i = 0; i < strings.size(); ++i) setText(i, strings.at(i)); // do not set this->view here otherwise insertChild() will fail if (QTreeModel *model = treeModel(treeview)) { @@ -1481,7 +1480,7 @@ QTreeWidgetItem::QTreeWidgetItem(QTreeWidgetItem *parent, int type) QTreeWidgetItem::QTreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, int type) : rtti(type), d(new QTreeWidgetItemPrivate(this)) { - for (int i = 0; i < strings.count(); ++i) + for (int i = 0; i < strings.size(); ++i) setText(i, strings.at(i)); if (parent) parent->addChild(this); @@ -1755,8 +1754,8 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value) else values.resize(column + 1); } - if (d->display.count() <= column) { - for (int i = d->display.count() - 1; i < column - 1; ++i) + if (d->display.size() <= column) { + for (int i = d->display.size() - 1; i < column - 1; ++i) d->display.append(QVariant()); d->display.append(value); } else if (d->display[column] != value) { @@ -1823,7 +1822,7 @@ QVariant QTreeWidgetItem::data(int column, int role) const switch (role) { case Qt::EditRole: case Qt::DisplayRole: - if (column >= 0 && column < d->display.count()) + if (column >= 0 && column < d->display.size()) return d->display.at(column); break; case Qt::CheckStateRole: @@ -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,19 +2374,19 @@ 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(); int i; QTreeModel *m = treeModel(); - for (i = 0; i < indices.count(); ++i) { + for (i = 0; i < indices.size(); ++i) { QTreeWidgetItem *item = m->item(indices.at(i)); item->d->selected = true; } indices = deselected.indexes(); - for (i = 0; i < indices.count(); ++i) { + for (i = 0; i < indices.size(); ++i) { QTreeWidgetItem *item = m->item(indices.at(i)); item->d->selected = false; } @@ -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(); } /* @@ -2806,10 +2816,10 @@ void QTreeWidget::setHeaderItem(QTreeWidgetItem *item) void QTreeWidget::setHeaderLabels(const QStringList &labels) { Q_D(QTreeWidget); - if (columnCount() < labels.count()) - setColumnCount(labels.count()); + if (columnCount() < labels.size()) + setColumnCount(labels.size()); QTreeWidgetItem *item = d->treeModel()->headerItem; - for (int i = 0; i < labels.count(); ++i) + for (int i = 0; i < labels.size(); ++i) item->setText(i, labels.at(i)); } @@ -3052,8 +3062,8 @@ QList<QTreeWidgetItem*> QTreeWidget::selectedItems() const Q_D(const QTreeWidget); const QModelIndexList indexes = selectionModel()->selectedIndexes(); QList<QTreeWidgetItem*> items; - items.reserve(indexes.count()); - QDuplicateTracker<QTreeWidgetItem *> seen(indexes.count()); + items.reserve(indexes.size()); + QDuplicateTracker<QTreeWidgetItem *> seen(indexes.size()); for (const auto &index : indexes) { QTreeWidgetItem *item = d->item(index); if (item->isHidden() || seen.hasSeen(item)) @@ -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()); } /*! |