diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index ac59271c8d..f4f61369b6 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -584,12 +584,15 @@ void QTableModel::ensureSorted(int column, Qt::SortOrder order, QList newVertical = verticalHeaderItems; QList colItems = columnItems(column); QList::iterator vit = colItems.begin(); + qsizetype distanceFromBegin = 0; bool changed = false; for (int i = 0; i < sorting.count(); ++i) { + distanceFromBegin = std::distance(colItems.begin(), vit); int oldRow = sorting.at(i).second; QTableWidgetItem *item = colItems.at(oldRow); colItems.remove(oldRow); - vit = sortedInsertionIterator(colItems.begin(), colItems.end(), order, item); + vit = sortedInsertionIterator(colItems.begin() + distanceFromBegin, colItems.end(), order, + item); int newRow = qMax((int)(vit - colItems.begin()), 0); if ((newRow < oldRow) && !(*item < *colItems.at(oldRow - 1)) && !(*colItems.at(oldRow - 1) < *item)) newRow = oldRow;