質問: QTreeViewでQModelIndexの可視行を見つける簡単な方法 与えられた `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 } ```