如何测试双击的项目是否在 QTreeWidget 的底部

How to test if a double-clicked item is at the bottom of a QTreeWidget

我有一个具有以下形状的 QTreeWidget:

Root
- Item1
-- Sub11
--- Sub111
-- Sub12
--- Sub121
...

当双击 QTreeWidget 中的任何项目时,选择默认展开(如果已经展开则折叠)。我创建了一个简单的函数 tree_get_details(self, item, column) 来打印双击项目的项目和列,并将其与 itemDoubleClicked 连接。到目前为止效果很好。但是我怎样才能使这个函数只在树的底层可用(即对于 subXXX 行)。因此,对于 Root、Item1、Item2、Sub11、Sub12,双击事件的默认行为以及 Sub111、Sub121 打印项目和列的默认行为?

如果传入的参数 "item" 位于底层,我需要以某种方式在我的函数 tree_get_details 中进行测试。我知道 topLevelItem 方法但找不到相应的底部方法(如果它存在......)。我的树有 4 级层次结构。

这取决于您对 "bottom item" 的确切含义。 树中 "bottom item" 的通常名称是 "leaf item"。 它被定义为没有 children 的项目。 这是你可以用 QTreeWidgetItem::childCount 方法检查的东西(当且仅当它 returns 0 时它是一片叶子)。

如果出于某种原因,你想检测第三个 sub-level 中的项目,你可以递归地计算 parent 个项目的数量。 这稍微复杂一些,可能不是你想要的。