qtreeview遍历

调用递归方法

QTreeView* treeview = ui.treeView;
    treeview->setExpanded(treeview->rootIndex(), true);

    QAbstractItemModel *model = treeview->model();

    if (model) {
        QModelIndex rootIndex = model->index(0, 0); // 获取根节点的索引

        if (rootIndex.isValid()) {
            traverseTree(model, treeview->rootIndex());
        }
    }


递归方法定义

void traverseTree(QAbstractItemModel *model, const QModelIndex &parentIndex)
{

    int rowCount = model->rowCount(parentIndex); // 获取父节点下的行数
    QStandardItemModel*   itemmodel = static_cast(ui.treeView->model());
    //QStandardItemModel*   itemmodel = static_cast(model);
    
    for (int i = 0; i < rowCount; ++i) 
    {
        QModelIndex childIndex = model->index(i, 0, parentIndex); // 获取子节点的索引
        QStandardItem*   currentItem = itemmodel->itemFromIndex(childIndex);

        QVariant data = model->data(childIndex); // 获取子节点的数据

        // 如果子节点有子项,递归遍历它们
        if (model->hasChildren(childIndex)) 
        {
            traverseTree(model, childIndex);
        }
    }
}

你可能感兴趣的:(c++,c++)