PyQt5中双击QTreeView项时如何获取其层级深度?
获取QTreeView双击项的层级深度
完全可以获取被点击项的层级深度,以下是两种实用实现方式:
方法一:父索引循环计数(兼容所有Qt版本)
在doubleClicked信号对应的槽函数中,通过传入的QModelIndex循环向上查找父索引,每找到一个有效父索引就计数加1,直到顶层索引:
void onTreeViewDoubleClicked(const QModelIndex &index) { int depth = 0; QModelIndex currentIdx = index; while (currentIdx.parent().isValid()) { depth++; currentIdx = currentIdx.parent(); } // 此时depth即为层级深度:顶层项(Item1、Item2)为0,Item1.1为1,Item2.1.1为2 qDebug() << "当前项层级深度:" << depth; }
方法二:直接调用depth()方法(Qt 5.11及以上版本)
Qt 5.11及更高版本为QModelIndex提供了depth()方法,可直接返回索引的层级深度,顶层项深度为0,子项深度依次递增:
void onTreeViewDoubleClicked(const QModelIndex &index) { int depth = index.depth(); qDebug() << "当前项层级深度:" << depth; }
两种方式都能得到你需要的层级结果,可根据项目使用的Qt版本选择对应方法。
内容的提问来源于stack exchange,提问作者DJames
相关产品推荐
相关产品推荐

