2011-11-24 29 views
3

有沒有辦法獲得給定QModelIndex的「可視化行」?在QTreeView中更容易找到QModelIndex的可見行

比方說,我們有一棵樹,其中一些節點擴大了,一些沒有。例如,採取局部展開的樹,然後單擊最後一個項目:

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

我想知道,我的項目是點擊第5行中,編程。 QModelIndex的行和列沒有幫助,因爲這裏有層次結構。

+0

可能重複(HTTP:/ /stackoverflow.com/questions/1739643/easier-way-to-find-visual-position-of-qmodelindex-in-qtreeview) –

回答

2

如果所有的行具有相同的高度,就可以計算可視化排這樣的:

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 
} 
的[找到(視覺)QModelIndex在QTreeView則位置更簡單的方法]
+0

不行,如果行將有不同的高度 –

+1

@DmitrySazonov:是的,這就是我說的在第一句話中。 –

+0

是的,同意。我瞎了。投了票。 –