QTreeViewでQModelIndexの可視行を見つける簡単な方法

与えられた QModelIndex の「視覚的な行」を得る方法はありますか?

いくつかのノードが展開されたツリーと、展開されていないツリーがあるとしましょう。たとえば、ツリーを部分的に展開して、最後の項目をクリックします。

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

クリックしたアイテムがプログラムで5行目にあることを知りたい QModelIndex の行と列は、ここに階層があるので役に立ちません。

3

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
}
2
追加された
@DmitrySazonov:はい、それは私が最初の文章で言ったことです。
追加された 著者 Marc Mutz - mmutz,
行の高さが異なる場合は動作しません
追加された 著者 Dmitry Sazonov,
はい同意する。わたしは目が見えない。投票した。
追加された 著者 Dmitry Sazonov,