Я пытаюсь эффективно подсчитать различные вхождения в QStandardItemModel и отобразить результаты в QTreeWidget.В случае использования, когда модель данных содержит 6000 строк и я подсчитываю различные вхождения для элементов в 12 столбцах, это занимает ~ 7 секунд.Я хочу сделать это намного быстрее.
Следующий код показывает мою текущую реализацию:
// QTreeWidget filters contains list of distinct items in QStandardItemModel dm
// filters top items = dm column names
// filters child items = dm column distinct items
// filterCategoryToDmColumn = QMap<QString, int>
// maps column names to column number in model
//
// Example
//
// FileType // name of a column in dm
// JPG // distinct item in FileType column
// TIF // distinct item in FileType column
QTreeWidgetItemIterator it(filters);
while (*it) {
// count only child items
if ((*it)->parent()) {
int col = filters->filterCategoryToDmColumn[(*it)->parent()->text(0)];
QString searchValue = (*it)->text(1);
int tot = 0;
for (int row = 0; row < dm->rowCount(); ++row) {
if (dm->index(row, col).data().toString() == searchValue) {
tot++;
}
}
(*it)->setData(3, Qt::EditRole, QString::number(tot));
}
++it;
}