如何在QStandardModel中有效地计算不同的值

时间:2019-06-12 17:34:58

标签: count distinct qstandarditemmodel

我试图有效地计数QStandardItemModel中的不同事件,并将结果显示在QTreeWidget中。在一个数据模型包含6,000行且用我计算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;
}

0 个答案:

没有答案