QTreeView 遍历所有model C++表示
时间: 2023-07-15 12:15:38 浏览: 259
要遍历 QTreeView 中所有的 model 数据,可以使用 QAbstractItemModel 的遍历方法,如下所示:
```cpp
void traverseModelData(QAbstractItemModel *model, const QModelIndex &parentIndex = QModelIndex(), int depth = 0) {
// 遍历当前层级下的所有子项
int rowCount = model->rowCount(parentIndex);
int columnCount = model->columnCount(parentIndex);
for (int row = 0; row < rowCount; ++row) {
for (int col = 0; col < columnCount; ++col) {
QModelIndex index = model->index(row, col, parentIndex);
// 处理当前项
// 例如输出当前项的数据
QString data = model->data(index).toString();
qDebug() << QString("%1%2").arg(QString(depth * 2, ' ')).arg(data);
// 递归遍历子项
traverseModelData(model, index, depth + 1);
}
}
}
```
其中,`model` 参数是要遍历的 model,`parentIndex` 参数是当前遍历的父项索引,`depth` 参数是当前遍历的层级深度。
在遍历过程中,我们首先获取当前层级下的所有子项,并逐个处理。对于每个子项,我们可以通过 `QAbstractItemModel::index()` 方法获取其索引,然后再进行处理。在处理当前项之后,我们递归遍历其子项。需要注意的是,为了保证递归遍历的正确性,我们在递归调用 `traverseModelData()` 方法时,需要将当前项的索引作为父项索引传入。
阅读全文