在 QTreeView 中找到 QModelIndex 可见行的更简单方法
Posted
技术标签:
【中文标题】在 QTreeView 中找到 QModelIndex 可见行的更简单方法【英文标题】:Easier way to find visible row of a QModelIndex in a QTreeView 【发布时间】:2011-11-24 21:00:03 【问题描述】:有没有办法获得给定QModelIndex
的“可视行”?
假设我们有一棵树,其中一些节点展开,而另一些则没有展开。例如,获取部分展开的树并单击最后一项:
item1 # (visual) row 1
item2 # 2
item5 # 3
item7 # 4
item8 # 5 <-- click here
我想知道我点击的项目在第 5 行,以编程方式。 QModelIndex
的行和列没有帮助,因为这里有层次结构。
【问题讨论】:
Easier way to find (visual) position of QModelIndex in QTreeView 的可能重复项 【参考方案1】:如果您的所有行都具有相同的高度,您可以像这样计算可视行:
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
【讨论】:
@DmitrySazonov:是的,这就是我在第一句话中所说的。 是的,同意。我瞎了。投票赞成。以上是关于在 QTreeView 中找到 QModelIndex 可见行的更简单方法的主要内容,如果未能解决你的问题,请参考以下文章
如何调整 QTreeView 和 QStandardItemModel 中的行大小?