widgets: Use QList::reserve(), reduces reallocations.

Change-Id: I49cc03f365c77f142f62c8e77505ec09723a44d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
Sérgio Martins 2015-06-22 22:12:27 +01:00
parent a4d3af9614
commit fece7cdb5d
17 changed files with 117 additions and 41 deletions

View File

@ -198,7 +198,9 @@ QList<QAccessibleInterface *> QAccessibleTable::selectedCells() const
QList<QAccessibleInterface*> cells; QList<QAccessibleInterface*> cells;
if (!view()->selectionModel()) if (!view()->selectionModel())
return cells; return cells;
Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedIndexes()) const QModelIndexList selectedIndexes = view()->selectionModel()->selectedIndexes();
cells.reserve(selectedIndexes.size());
Q_FOREACH (const QModelIndex &index, selectedIndexes)
cells.append(child(logicalIndex(index))); cells.append(child(logicalIndex(index)));
return cells; return cells;
} }
@ -208,9 +210,11 @@ QList<int> QAccessibleTable::selectedColumns() const
if (!view()->selectionModel()) if (!view()->selectionModel())
return QList<int>(); return QList<int>();
QList<int> columns; QList<int> columns;
Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedColumns()) { const QModelIndexList selectedColumns = view()->selectionModel()->selectedColumns();
columns.reserve(selectedColumns.size());
Q_FOREACH (const QModelIndex &index, selectedColumns)
columns.append(index.column()); columns.append(index.column());
}
return columns; return columns;
} }
@ -219,9 +223,11 @@ QList<int> QAccessibleTable::selectedRows() const
if (!view()->selectionModel()) if (!view()->selectionModel())
return QList<int>(); return QList<int>();
QList<int> rows; QList<int> rows;
Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedRows()) { const QModelIndexList selectedRows = view()->selectionModel()->selectedRows();
rows.reserve(selectedRows.size());
Q_FOREACH (const QModelIndex &index, selectedRows)
rows.append(index.row()); rows.append(index.row());
}
return rows; return rows;
} }

View File

@ -1189,12 +1189,17 @@ QList<QUrl> QFileDialogPrivate::userSelectedFiles() const
if (!usingWidgets()) if (!usingWidgets())
return addDefaultSuffixToUrls(selectedFiles_sys()); return addDefaultSuffixToUrls(selectedFiles_sys());
foreach (const QModelIndex &index, qFileDialogUi->listView->selectionModel()->selectedRows()) const QModelIndexList selectedRows = qFileDialogUi->listView->selectionModel()->selectedRows();
files.reserve(selectedRows.size());
foreach (const QModelIndex &index, selectedRows)
files.append(QUrl::fromLocalFile(index.data(QFileSystemModel::FilePathRole).toString())); files.append(QUrl::fromLocalFile(index.data(QFileSystemModel::FilePathRole).toString()));
if (files.isEmpty() && !lineEdit()->text().isEmpty()) if (files.isEmpty() && !lineEdit()->text().isEmpty()) {
foreach (const QString &path, typedFiles()) const QStringList typedFilesList = typedFiles();
files.reserve(typedFilesList.size());
foreach (const QString &path, typedFilesList)
files.append(QUrl::fromLocalFile(path)); files.append(QUrl::fromLocalFile(path));
}
return files; return files;
} }
@ -1228,7 +1233,9 @@ QStringList QFileDialogPrivate::addDefaultSuffixToFiles(const QStringList &files
QList<QUrl> QFileDialogPrivate::addDefaultSuffixToUrls(const QList<QUrl> &urlsToFix) const QList<QUrl> QFileDialogPrivate::addDefaultSuffixToUrls(const QList<QUrl> &urlsToFix) const
{ {
QList<QUrl> urls; QList<QUrl> urls;
for (int i=0; i<urlsToFix.size(); ++i) { const int numUrlsToFix = urlsToFix.size();
urls.reserve(numUrlsToFix);
for (int i = 0; i < numUrlsToFix; ++i) {
QUrl url = urlsToFix.at(i); QUrl url = urlsToFix.at(i);
// if the filename has no suffix, add the default suffix // if the filename has no suffix, add the default suffix
const QString defaultSuffix = options->defaultSuffix(); const QString defaultSuffix = options->defaultSuffix();
@ -1252,7 +1259,9 @@ QStringList QFileDialog::selectedFiles() const
Q_D(const QFileDialog); Q_D(const QFileDialog);
QStringList files; QStringList files;
foreach (const QUrl &file, d->userSelectedFiles()) const QList<QUrl> userSelectedFiles = d->userSelectedFiles();
files.reserve(userSelectedFiles.size());
foreach (const QUrl &file, userSelectedFiles)
files.append(file.toLocalFile()); files.append(file.toLocalFile());
if (files.isEmpty() && d->usingWidgets()) { if (files.isEmpty() && d->usingWidgets()) {
const FileMode fm = fileMode(); const FileMode fm = fileMode();
@ -1277,7 +1286,9 @@ QList<QUrl> QFileDialog::selectedUrls() const
return d->userSelectedFiles(); return d->userSelectedFiles();
} else { } else {
QList<QUrl> urls; QList<QUrl> urls;
foreach (const QString &file, selectedFiles()) const QStringList selectedFileList = selectedFiles();
urls.reserve(selectedFileList.size());
foreach (const QString &file, selectedFileList)
urls.append(QUrl::fromLocalFile(file)); urls.append(QUrl::fromLocalFile(file));
return urls; return urls;
} }
@ -1356,7 +1367,9 @@ QStringList qt_strip_filters(const QStringList &filters)
{ {
QStringList strippedFilters; QStringList strippedFilters;
QRegExp r(QString::fromLatin1(QPlatformFileDialogHelper::filterRegExp)); QRegExp r(QString::fromLatin1(QPlatformFileDialogHelper::filterRegExp));
for (int i = 0; i < filters.count(); ++i) { const int numFilters = filters.count();
strippedFilters.reserve(numFilters);
for (int i = 0; i < numFilters; ++i) {
QString filterName; QString filterName;
int index = r.indexIn(filters[i]); int index = r.indexIn(filters[i]);
if (index >= 0) if (index >= 0)
@ -1391,7 +1404,9 @@ void QFileDialog::setNameFilters(const QStringList &filters)
Q_D(QFileDialog); Q_D(QFileDialog);
d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)"))); d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)")));
QStringList cleanedFilters; QStringList cleanedFilters;
for (int i = 0; i < filters.count(); ++i) { const int numFilters = filters.count();
cleanedFilters.reserve(numFilters);
for (int i = 0; i < numFilters; ++i) {
cleanedFilters << filters[i].simplified(); cleanedFilters << filters[i].simplified();
} }
d->options->setNameFilters(cleanedFilters); d->options->setNameFilters(cleanedFilters);
@ -2186,6 +2201,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
const QStringList schemes = QStringList(QStringLiteral("file")); const QStringList schemes = QStringList(QStringLiteral("file"));
const QList<QUrl> selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes); const QList<QUrl> selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes);
QStringList fileNames; QStringList fileNames;
fileNames.reserve(selectedUrls.size());
foreach (const QUrl &url, selectedUrls) foreach (const QUrl &url, selectedUrls)
fileNames << url.toLocalFile(); fileNames << url.toLocalFile();
return fileNames; return fileNames;
@ -2662,7 +2678,9 @@ void QFileDialogPrivate::saveSettings()
settings.setValue(QLatin1String("treeViewHeader"), qFileDialogUi->treeView->header()->saveState()); settings.setValue(QLatin1String("treeViewHeader"), qFileDialogUi->treeView->header()->saveState());
} }
QStringList historyUrls; QStringList historyUrls;
foreach (const QString &path, q->history()) const QStringList history = q->history();
historyUrls.reserve(history.size());
foreach (const QString &path, history)
historyUrls << QUrl::fromLocalFile(path).toString(); historyUrls << QUrl::fromLocalFile(path).toString();
settings.setValue(QLatin1String("history"), historyUrls); settings.setValue(QLatin1String("history"), historyUrls);
settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString()); settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString());

View File

@ -1183,8 +1183,11 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order)
emit layoutAboutToBeChanged(); emit layoutAboutToBeChanged();
QModelIndexList oldList = persistentIndexList(); QModelIndexList oldList = persistentIndexList();
QList<QPair<QFileSystemModelPrivate::QFileSystemNode*, int> > oldNodes; QList<QPair<QFileSystemModelPrivate::QFileSystemNode*, int> > oldNodes;
for (int i = 0; i < oldList.count(); ++i) { const int nodeCount = oldList.count();
QPair<QFileSystemModelPrivate::QFileSystemNode*, int> pair(d->node(oldList.at(i)), oldList.at(i).column()); oldNodes.reserve(nodeCount);
for (int i = 0; i < nodeCount; ++i) {
const QModelIndex &oldNode = oldList.at(i);
QPair<QFileSystemModelPrivate::QFileSystemNode*, int> pair(d->node(oldNode), oldNode.column());
oldNodes.append(pair); oldNodes.append(pair);
} }
@ -1197,9 +1200,10 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order)
d->sortOrder = order; d->sortOrder = order;
QModelIndexList newList; QModelIndexList newList;
for (int i = 0; i < oldNodes.count(); ++i) { for (int i = 0; i < nodeCount; ++i) {
QModelIndex idx = d->index(oldNodes.at(i).first); const QPair<QFileSystemModelPrivate::QFileSystemNode*, int> &oldNode = oldNodes.at(i);
idx = idx.sibling(idx.row(), oldNodes.at(i).second); QModelIndex idx = d->index(oldNode.first);
idx = idx.sibling(idx.row(), oldNode.second);
newList.append(idx); newList.append(idx);
} }
changePersistentIndexList(oldList, newList); changePersistentIndexList(oldList, newList);
@ -1648,7 +1652,9 @@ QStringList QFileSystemModel::nameFilters() const
Q_D(const QFileSystemModel); Q_D(const QFileSystemModel);
QStringList filters; QStringList filters;
#ifndef QT_NO_REGEXP #ifndef QT_NO_REGEXP
for (int i = 0; i < d->nameFilters.size(); ++i) { const int numNameFilters = d->nameFilters.size();
filters.reserve(numNameFilters);
for (int i = 0; i < numNameFilters; ++i) {
filters << d->nameFilters.at(i).pattern(); filters << d->nameFilters.at(i).pattern();
} }
#endif #endif

View File

@ -619,6 +619,7 @@ void QFontDialogPrivate::updateSizes()
int i = 0; int i = 0;
int current = -1; int current = -1;
QStringList str_sizes; QStringList str_sizes;
str_sizes.reserve(sizes.size());
for(QList<int>::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { for(QList<int>::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) {
str_sizes.append(QString::number(*it)); str_sizes.append(QString::number(*it));
if (current == -1 && *it == size) if (current == -1 && *it == size)

View File

@ -791,6 +791,7 @@ QStringList QInputDialog::comboBoxItems() const
QStringList result; QStringList result;
if (d->comboBox) { if (d->comboBox) {
const int count = d->comboBox->count(); const int count = d->comboBox->count();
result.reserve(count);
for (int i = 0; i < count; ++i) for (int i = 0; i < count; ++i)
result.append(d->comboBox->itemText(i)); result.append(d->comboBox->itemText(i));
} }

View File

@ -274,7 +274,9 @@ void QUrlModel::addUrls(const QList<QUrl> &list, int row, bool move)
QList<QUrl> QUrlModel::urls() const QList<QUrl> QUrlModel::urls() const
{ {
QList<QUrl> list; QList<QUrl> list;
for (int i = 0; i < rowCount(); ++i) const int numRows = rowCount();
list.reserve(numRows);
for (int i = 0; i < numRows; ++i)
list.append(data(index(i, 0), UrlRole).toUrl()); list.append(data(index(i, 0), UrlRole).toUrl());
return list; return list;
} }
@ -334,10 +336,12 @@ void QUrlModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &botto
void QUrlModel::layoutChanged() void QUrlModel::layoutChanged()
{ {
QStringList paths; QStringList paths;
for (int i = 0; i < watching.count(); ++i) const int numPaths = watching.count();
paths.reserve(numPaths);
for (int i = 0; i < numPaths; ++i)
paths.append(watching.at(i).second); paths.append(watching.at(i).second);
watching.clear(); watching.clear();
for (int i = 0; i < paths.count(); ++i) { for (int i = 0; i < numPaths; ++i) {
QString path = paths.at(i); QString path = paths.at(i);
QModelIndex newIndex = fileSystemModel->index(path); QModelIndex newIndex = fileSystemModel->index(path);
watching.append(QPair<QModelIndex, QString>(newIndex, path)); watching.append(QPair<QModelIndex, QString>(newIndex, path));
@ -453,12 +457,14 @@ void QSidebar::removeEntry()
{ {
QList<QModelIndex> idxs = selectionModel()->selectedIndexes(); QList<QModelIndex> idxs = selectionModel()->selectedIndexes();
QList<QPersistentModelIndex> indexes; QList<QPersistentModelIndex> indexes;
for (int i = 0; i < idxs.count(); i++) const int numIndexes = idxs.count();
for (int i = 0; i < numIndexes; i++)
indexes.append(idxs.at(i)); indexes.append(idxs.at(i));
for (int i = 0; i < indexes.count(); ++i) for (int i = 0; i < numIndexes; ++i) {
if (!indexes.at(i).data(QUrlModel::UrlRole).toUrl().path().isEmpty()) if (!indexes.at(i).data(QUrlModel::UrlRole).toUrl().path().isEmpty())
model()->removeRow(indexes.at(i).row()); model()->removeRow(indexes.at(i).row());
}
} }
/*! /*!

View File

@ -752,8 +752,10 @@ static AnchorData *createSequence(Graph<AnchorVertex, AnchorData> *graph,
AnchorVertex *prev = before; AnchorVertex *prev = before;
QVector<AnchorData *> edges; QVector<AnchorData *> edges;
const int numVertices = vertices.count();
edges.reserve(numVertices + 1);
// Take from the graph, the edges that will be simplificated // Take from the graph, the edges that will be simplificated
for (int i = 0; i < vertices.count(); ++i) { for (int i = 0; i < numVertices; ++i) {
AnchorVertex *next = vertices.at(i); AnchorVertex *next = vertices.at(i);
AnchorData *ad = graph->takeEdge(prev, next); AnchorData *ad = graph->takeEdge(prev, next);
Q_ASSERT(ad); Q_ASSERT(ad);
@ -2569,6 +2571,7 @@ QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation)
if (!remainingConstraints.isEmpty()) { if (!remainingConstraints.isEmpty()) {
QList<QSimplexConstraint *> nonTrunkConstraints; QList<QSimplexConstraint *> nonTrunkConstraints;
nonTrunkConstraints.reserve(remainingConstraints.size());
QLinkedList<QSimplexConstraint *>::iterator it = remainingConstraints.begin(); QLinkedList<QSimplexConstraint *>::iterator it = remainingConstraints.begin();
while (it != remainingConstraints.end()) { while (it != remainingConstraints.end()) {
nonTrunkConstraints += *it; nonTrunkConstraints += *it;

View File

@ -284,7 +284,9 @@ void QGraphicsItemAnimation::setPosAt(qreal step, const QPointF &pos)
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::posList() const QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::posList() const
{ {
QList<QPair<qreal, QPointF> > list; QList<QPair<qreal, QPointF> > list;
for (int i = 0; i < d->xPosition.size(); ++i) const int xPosCount = d->xPosition.size();
list.reserve(xPosCount);
for (int i = 0; i < xPosCount; ++i)
list << QPair<qreal, QPointF>(d->xPosition.at(i).step, QPointF(d->xPosition.at(i).value, d->yPosition.at(i).value)); list << QPair<qreal, QPointF>(d->xPosition.at(i).step, QPointF(d->xPosition.at(i).value, d->yPosition.at(i).value));
return list; return list;
@ -338,7 +340,9 @@ void QGraphicsItemAnimation::setRotationAt(qreal step, qreal angle)
QList<QPair<qreal, qreal> > QGraphicsItemAnimation::rotationList() const QList<QPair<qreal, qreal> > QGraphicsItemAnimation::rotationList() const
{ {
QList<QPair<qreal, qreal> > list; QList<QPair<qreal, qreal> > list;
for (int i = 0; i < d->rotation.size(); ++i) const int numRotations = d->rotation.size();
list.reserve(numRotations);
for (int i = 0; i < numRotations; ++i)
list << QPair<qreal, qreal>(d->rotation.at(i).step, d->rotation.at(i).value); list << QPair<qreal, qreal>(d->rotation.at(i).step, d->rotation.at(i).value);
return list; return list;
@ -386,7 +390,9 @@ void QGraphicsItemAnimation::setTranslationAt(qreal step, qreal dx, qreal dy)
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::translationList() const QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::translationList() const
{ {
QList<QPair<qreal, QPointF> > list; QList<QPair<qreal, QPointF> > list;
for (int i = 0; i < d->xTranslation.size(); ++i) const int numTranslations = d->xTranslation.size();
list.reserve(numTranslations);
for (int i = 0; i < numTranslations; ++i)
list << QPair<qreal, QPointF>(d->xTranslation.at(i).step, QPointF(d->xTranslation.at(i).value, d->yTranslation.at(i).value)); list << QPair<qreal, QPointF>(d->xTranslation.at(i).step, QPointF(d->xTranslation.at(i).value, d->yTranslation.at(i).value));
return list; return list;
@ -435,7 +441,9 @@ void QGraphicsItemAnimation::setScaleAt(qreal step, qreal sx, qreal sy)
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::scaleList() const QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::scaleList() const
{ {
QList<QPair<qreal, QPointF> > list; QList<QPair<qreal, QPointF> > list;
for (int i = 0; i < d->horizontalScale.size(); ++i) const int numScales = d->horizontalScale.size();
list.reserve(numScales);
for (int i = 0; i < numScales; ++i)
list << QPair<qreal, QPointF>(d->horizontalScale.at(i).step, QPointF(d->horizontalScale.at(i).value, d->verticalScale.at(i).value)); list << QPair<qreal, QPointF>(d->horizontalScale.at(i).step, QPointF(d->horizontalScale.at(i).value, d->verticalScale.at(i).value));
return list; return list;
@ -483,7 +491,9 @@ void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv)
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::shearList() const QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::shearList() const
{ {
QList<QPair<qreal, QPointF> > list; QList<QPair<qreal, QPointF> > list;
for (int i = 0; i < d->horizontalShear.size(); ++i) const int numShears = d->horizontalShear.size();
list.reserve(numShears);
for (int i = 0; i < numShears; ++i)
list << QPair<qreal, QPointF>(d->horizontalShear.at(i).step, QPointF(d->horizontalShear.at(i).value, d->verticalShear.at(i).value)); list << QPair<qreal, QPointF>(d->horizontalShear.at(i).step, QPointF(d->horizontalShear.at(i).value, d->verticalShear.at(i).value));
return list; return list;

View File

@ -520,7 +520,9 @@ QList<QGraphicsItem *> QGraphicsSceneIndex::estimateTopLevelItems(const QRectF &
scened->ensureSortedTopLevelItems(); scened->ensureSortedTopLevelItems();
if (order == Qt::DescendingOrder) { if (order == Qt::DescendingOrder) {
QList<QGraphicsItem *> sorted; QList<QGraphicsItem *> sorted;
for (int i = scened->topLevelItems.size() - 1; i >= 0; --i) const int numTopLevelItems = scened->topLevelItems.size();
sorted.reserve(numTopLevelItems);
for (int i = numTopLevelItems - 1; i >= 0; --i)
sorted << scened->topLevelItems.at(i); sorted << scened->topLevelItems.at(i);
return sorted; return sorted;
} }

View File

@ -1699,7 +1699,9 @@ QList<QListWidgetItem*> QListWidget::selectedItems() const
Q_D(const QListWidget); Q_D(const QListWidget);
QModelIndexList indexes = selectionModel()->selectedIndexes(); QModelIndexList indexes = selectionModel()->selectedIndexes();
QList<QListWidgetItem*> items; QList<QListWidgetItem*> items;
for (int i = 0; i < indexes.count(); ++i) const int numIndexes = indexes.count();
items.reserve(numIndexes);
for (int i = 0; i < numIndexes; ++i)
items.append(d->listModel()->at(indexes.at(i).row())); items.append(d->listModel()->at(indexes.at(i).row()));
return items; return items;
} }

View File

@ -1884,6 +1884,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF
break; break;
} }
} while (expanded); } while (expanded);
selection.reserve((right - left + 1) * (bottom - top + 1));
for (int horizontal = left; horizontal <= right; ++horizontal) { for (int horizontal = left; horizontal <= right; ++horizontal) {
int column = d->logicalColumn(horizontal); int column = d->logicalColumn(horizontal);
for (int vertical = top; vertical <= bottom; ++vertical) { for (int vertical = top; vertical <= bottom; ++vertical) {
@ -1897,6 +1898,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF
int left = d->visualColumn(tl.column()); int left = d->visualColumn(tl.column());
int bottom = d->visualRow(br.row()); int bottom = d->visualRow(br.row());
int right = d->visualColumn(br.column()); int right = d->visualColumn(br.column());
selection.reserve((right - left + 1) * (bottom - top + 1));
for (int horizontal = left; horizontal <= right; ++horizontal) { for (int horizontal = left; horizontal <= right; ++horizontal) {
int column = d->logicalColumn(horizontal); int column = d->logicalColumn(horizontal);
for (int vertical = top; vertical <= bottom; ++vertical) { for (int vertical = top; vertical <= bottom; ++vertical) {
@ -1908,6 +1910,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF
} else if (horizontalMoved) { } else if (horizontalMoved) {
int left = d->visualColumn(tl.column()); int left = d->visualColumn(tl.column());
int right = d->visualColumn(br.column()); int right = d->visualColumn(br.column());
selection.reserve(right - left + 1);
for (int visual = left; visual <= right; ++visual) { for (int visual = left; visual <= right; ++visual) {
int column = d->logicalColumn(visual); int column = d->logicalColumn(visual);
QModelIndex topLeft = d->model->index(tl.row(), column, d->root); QModelIndex topLeft = d->model->index(tl.row(), column, d->root);
@ -1917,6 +1920,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF
} else if (verticalMoved) { } else if (verticalMoved) {
int top = d->visualRow(tl.row()); int top = d->visualRow(tl.row());
int bottom = d->visualRow(br.row()); int bottom = d->visualRow(br.row());
selection.reserve(bottom - top + 1);
for (int visual = top; visual <= bottom; ++visual) { for (int visual = top; visual <= bottom; ++visual) {
int row = d->logicalRow(visual); int row = d->logicalRow(visual);
QModelIndex topLeft = d->model->index(row, tl.column(), d->root); QModelIndex topLeft = d->model->index(row, tl.column(), d->root);

View File

@ -507,11 +507,15 @@ void QTableModel::sort(int column, Qt::SortOrder order)
QVector<QTableWidgetItem*> sorted_table(tableItems.count()); QVector<QTableWidgetItem*> sorted_table(tableItems.count());
QModelIndexList from; QModelIndexList from;
QModelIndexList to; QModelIndexList to;
for (int i = 0; i < rowCount(); ++i) { const int numRows = rowCount();
const int numColumns = columnCount();
from.reserve(numRows * numColumns);
to.reserve(numRows * numColumns);
for (int i = 0; i < numRows; ++i) {
int r = (i < sortable.count() int r = (i < sortable.count()
? sortable.at(i).second ? sortable.at(i).second
: unsortable.at(i - sortable.count())); : unsortable.at(i - sortable.count()));
for (int c = 0; c < columnCount(); ++c) { for (int c = 0; c < numColumns; ++c) {
sorted_table[tableIndex(i, c)] = item(r, c); sorted_table[tableIndex(i, c)] = item(r, c);
from.append(createIndex(r, c)); from.append(createIndex(r, c));
to.append(createIndex(i, c)); to.append(createIndex(i, c));

View File

@ -210,10 +210,12 @@ QWidgetList QAbstractScrollAreaScrollBarContainer::widgets(LogicalPosition posit
QWidgetList list; QWidgetList list;
const int scrollBarIndex = scrollBarLayoutIndex(); const int scrollBarIndex = scrollBarLayoutIndex();
if (position == LogicalLeft) { if (position == LogicalLeft) {
list.reserve(scrollBarIndex);
for (int i = 0; i < scrollBarIndex; ++i) for (int i = 0; i < scrollBarIndex; ++i)
list.append(layout->itemAt(i)->widget()); list.append(layout->itemAt(i)->widget());
} else if (position == LogicalRight) { } else if (position == LogicalRight) {
const int layoutItemCount = layout->count(); const int layoutItemCount = layout->count();
list.reserve(layoutItemCount - (scrollBarIndex + 1));
for (int i = scrollBarIndex + 1; i < layoutItemCount; ++i) for (int i = scrollBarIndex + 1; i < layoutItemCount; ++i)
list.append(layout->itemAt(i)->widget()); list.append(layout->itemAt(i)->widget());
} }

View File

@ -2263,6 +2263,7 @@ void QComboBox::insertItems(int index, const QStringList &list)
// construct a QStandardItem, reducing the number of expensive signals from the model // construct a QStandardItem, reducing the number of expensive signals from the model
if (QStandardItemModel *m = qobject_cast<QStandardItemModel*>(d->model)) { if (QStandardItemModel *m = qobject_cast<QStandardItemModel*>(d->model)) {
QList<QStandardItem *> items; QList<QStandardItem *> items;
items.reserve(insertCount);
QStandardItem *hiddenRoot = m->invisibleRootItem(); QStandardItem *hiddenRoot = m->invisibleRootItem();
for (int i = 0; i < insertCount; ++i) for (int i = 0; i < insertCount; ++i)
items.append(new QStandardItem(list.at(i))); items.append(new QStandardItem(list.at(i)));

View File

@ -2211,8 +2211,10 @@ QSet<QTabBar*> QDockAreaLayoutInfo::usedTabBars() const
QSet<QWidget*> QDockAreaLayoutInfo::usedSeparatorWidgets() const QSet<QWidget*> QDockAreaLayoutInfo::usedSeparatorWidgets() const
{ {
QSet<QWidget*> result; QSet<QWidget*> result;
const int numSeparatorWidgets = separatorWidgets.count();
result.reserve(numSeparatorWidgets);
for (int i = 0; i < separatorWidgets.count(); ++i) for (int i = 0; i < numSeparatorWidgets; ++i)
result << separatorWidgets.at(i); result << separatorWidgets.at(i);
for (int i = 0; i < item_list.count(); ++i) { for (int i = 0; i < item_list.count(); ++i) {

View File

@ -1502,8 +1502,11 @@ QList<int> QSplitter::sizes() const
Q_D(const QSplitter); Q_D(const QSplitter);
ensurePolished(); ensurePolished();
const int numSizes = d->list.size();
QList<int> list; QList<int> list;
for (int i = 0; i < d->list.size(); ++i) { list.reserve(numSizes);
for (int i = 0; i < numSizes; ++i) {
QSplitterLayoutStruct *s = d->list.at(i); QSplitterLayoutStruct *s = d->list.at(i);
list.append(d->pick(s->rect.size())); list.append(d->pick(s->rect.size()));
} }
@ -1598,8 +1601,10 @@ QByteArray QSplitter::saveState() const
stream << qint32(SplitterMagic); stream << qint32(SplitterMagic);
stream << qint32(version); stream << qint32(version);
const int numSizes = d->list.size();
QList<int> list; QList<int> list;
for (int i = 0; i < d->list.size(); ++i) { list.reserve(numSizes);
for (int i = 0; i < numSizes; ++i) {
QSplitterLayoutStruct *s = d->list.at(i); QSplitterLayoutStruct *s = d->list.at(i);
list.append(s->sizer); list.append(s->sizer);
} }

View File

@ -2439,10 +2439,13 @@ QList<QTextEdit::ExtraSelection> QWidgetTextControl::extraSelections() const
{ {
Q_D(const QWidgetTextControl); Q_D(const QWidgetTextControl);
QList<QTextEdit::ExtraSelection> selections; QList<QTextEdit::ExtraSelection> selections;
for (int i = 0; i < d->extraSelections.count(); ++i) { const int numExtraSelections = d->extraSelections.count();
selections.reserve(numExtraSelections);
for (int i = 0; i < numExtraSelections; ++i) {
QTextEdit::ExtraSelection sel; QTextEdit::ExtraSelection sel;
sel.cursor = d->extraSelections.at(i).cursor; const QAbstractTextDocumentLayout::Selection &sel2 = d->extraSelections.at(i);
sel.format = d->extraSelections.at(i).format; sel.cursor = sel2.cursor;
sel.format = sel2.format;
selections.append(sel); selections.append(sel);
} }
return selections; return selections;