有没有办法获得"视觉行"给定的QModelIndex
?
我们假设我们有一个树,其中一些节点已扩展,一些节点未扩展。例如,采用部分展开的树并单击最后一项:
item1 # (visual) row 1
item2 # 2
item5 # 3
item7 # 4
item8 # 5 <-- click here
我想知道我点击的项目是以编程方式排在第5行。 QModelIndex
的行和列没有帮助,因为这里有层次结构。
答案 0 :(得分:2)
如果所有行都具有相同的高度,则可以像这样计算可视行:
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
}