有没有一种方法来获取给定QModelIndex
的“可视行”?
假设我们有一棵树,其中有些节点被扩展,有些则没有。例如,拿一个部分展开的树,然后单击最后一个项目:
item1 # (visual) row 1
item2 # 2
item5 # 3
item7 # 4
item8 # 5 <-- click here
我想知道我单击的项目以编程方式位于第5行。
QModelIndex
的行和列无济于事,因为这里有层次结构。 最佳答案
如果所有行都具有相同的高度,则可以这样计算可视行:
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
}