From 5f3e64235e8d0ed70e93fa6bf379296e0324751b Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Thu, 31 Oct 2024 18:58:35 +0100 Subject: [PATCH] Itemviews: avoid unneeded calls to rowCount() Avoid unneeded calls to rowCount() in a for loop as this might get expensive for large models. Change-Id: Ic949ba64f5068b4e6ca0d0c9bc51f181e220da70 Reviewed-by: Volker Hilsheimer (cherry picked from commit 4280e4c12e289aeb0ed28f07b0036e89bc8fb35f) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/itemviews/qlistview.cpp | 3 ++- src/widgets/itemviews/qtablewidget.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 91f32a14e15..b07032a11c5 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -583,7 +583,8 @@ void QListViewPrivate::selectAll(QItemSelectionModel::SelectionFlags command) QModelIndex topLeft; int row = 0; const int colCount = model->columnCount(root); - for(; row < model->rowCount(root); ++row) { + const int rowCount = model->rowCount(root); + for ( ; row < rowCount; ++row) { if (isHidden(row)) { //it might be the end of a selection range if (topLeft.isValid()) { diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index 2c1a95f6c8b..a2d9153c913 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -498,11 +498,12 @@ void QTableModel::sort(int column, Qt::SortOrder order) { QList> sortable; QList unsortable; + const int numRows = rowCount(); - sortable.reserve(rowCount()); - unsortable.reserve(rowCount()); + sortable.reserve(numRows); + unsortable.reserve(numRows); - for (int row = 0; row < rowCount(); ++row) { + for (int row = 0; row < numRows; ++row) { if (QTableWidgetItem *itm = item(row, column)) sortable.append(QPair(itm, row)); else @@ -515,7 +516,6 @@ void QTableModel::sort(int column, Qt::SortOrder order) QList sorted_table(tableItems.size()); QModelIndexList from; QModelIndexList to; - const int numRows = rowCount(); const int numColumns = columnCount(); from.reserve(numRows * numColumns); to.reserve(numRows * numColumns);