递归扩展QTreeView中项目的所有子项

f.r*_*ues 3 qt pyqt qtreeview pyside

我有一个QTreeView,我想扩展最近扩展项目的所有子项目.

我尝试使用.expandAll(),但它也扩展了所有其他项目.

我很难获得最后扩展的项目的ModelIndex,如果我有它,我可以递归扩展它的孩子.

我怎么做?

vah*_*cho 9

要扩展给定的节点以下的所有节点,我将以下列方式(C++)递归地执行:

void expandChildren(const QModelIndex &index, QTreeView *view)
{
    if (!index.isValid()) {
        return;
    }

    int childCount = index.model()->rowCount(index);
    for (int i = 0; i < childCount; i++) {
        const QModelIndex &child = index.child(i, 0);
        // Recursively call the function for each child node.
        expandChildren(child, view);
    }

    if (!view->expanded(index)) {
        view->expand(index);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 它不应该是`view-&gt;isExpanded`(Qt 5.6)吗?你真的认为调用它比调用`expand`更有效吗? (2认同)