2011-12-27 24 views
1

私はQTableViewを持っています。スクロールするときに選択範囲を移動したいので、カーソルが常に表示されます。QTableView - スクロール時に選択を変更します。

enter image description here

ありQTableView.selectRow(rowNo)はあるが、あなたはどここれを呼び出すための提案を持っているのですか?

理想的には、選択した行をスクロールして中心にしたいと思います。

答えて

0

.rowを呼び出すことができます私はこの(PyQt4)のようにそれをやった:初期化時に

私はイベントをスクロールバーに接続します。

self.tableView.verticalScrollBar().valueChanged.connect(self.onScroll) 

その後ハンドラで:

def onScroll(self, *args): 
    "Ensure that selected row moves when scrolling - it must be always visible." 
    tableView = self.tableView 
    currentRow = tableView.selectionModel().currentIndex().row() 
    rect = tableView.viewport().rect() 
    topRow = tableView.indexAt(rect.topLeft()).row() 
    if currentRow < topRow: 
     tableView.selectRow(topRow) 
    else: 
     bottomRow = tableView.indexAt(rect.bottomLeft()).row() 
     if currentRow > bottomRow: 
      tableView.selectRow(bottomRow) 
1

メソッド.indexAt(viewport()。pos())を使用できます。位置を少し修正する必要があるかもしれません。すなわちそれをヘッダサイズだけ移動させる。あなたは、インデックスを持っている場合、あなたは、単に()メソッド

関連する問題