【问题标题】:Easier way to find visible row of a QModelIndex in a QTreeView在 QTreeView 中找到 QModelIndex 可见行的更简单方法
【发布时间】:2011-11-24 21:00:03
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c++ qt qtreeview qmodelindex


【解决方案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:是的,这就是我在第一句话中所说的。
  • 是的,同意。我瞎了。投票赞成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
相关资源
最近更新 更多