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 に答える