2014-11-01 42 views
0

這個想法是發出索引,以便我可以在其他位置捕獲它並更新該索引中的信息。它工作的很好 - 除了當我滾動(同時保持鼠標仍然)正確的指標不發射。我猜這是因爲wheelEvent在實際滾動發生之前發射。儘管我在這裏有點卡住了。在視圖中滾動時不正確的索引

class View(QtGui.QTreeView): 
    hovered = QtCore.Signal(QtCore.QModelIndex) 

    def __init__(self, parent=None): 
     super(View, self).__init__(parent) 

     self.setMouseTracking(True) 

    def mouseMoveEvent(self, event): 
     index = QtCore.QPersistentModelIndex(self.indexAt(event.pos())) 
     if index.isValid(): 
     self.hovered.emit(index) 

     super(TreeView, self).mouseMoveEvent(event) 

    def wheelEvent(self, event): 
     index = QtCore.QPersistentModelIndex(self.indexAt(event.pos())) 
     if index.isValid(): 
     self.hovered.emit(index) 

     super(TreeView, self).wheelEvent(event) 

回答

0

現在我覺得有點笨。問題正是我剛纔所說的。實際的滾動發生在我抓取索引後,因爲我最後調用了超類方法(duh!)。我所要做的就是將超類方法移到頂端。

3

在不同的事件之間保存QModelIndex是不安全的。您需要改用QPersistentModelIndex

+0

感謝您的信息。我確定要更新它。 – 2014-11-01 21:22:19

相關問題