3

有没有办法获得给定的“视觉行” QModelIndex

假设我们有一棵树,其中一些节点展开,一些节点没有展开。例如,取一个部分展开的树并单击最后一项:

item1    # (visual) row 1
  item2  # 2
  item5  # 3
item7    # 4
  item8  # 5 <-- click here

我想知道我点击的那个项目在第 5 行,以编程方式。QModelIndex的行和列没有帮助,因为这里有层次结构。

4

1 回答 1

3

如果所有行都具有相同的高度,则可以像这样计算可视行:

int visual_row(const QTreeView *tv, const QModelIndex &mi)
{
    const QRect visualRect = tv->visualRect(mi);
    if (visualRect.isValid())
        return visualRect.y() / visualRect.height();
    else
        return -1; // invisible
}
于 2012-06-23T16:30:14.803 回答