2011-12-27 5 views
1

У меня есть QTableView. Я хочу, чтобы выбор был перемещен, когда я прокручиваю - так что курсор всегда будет виден.QTableView - изменение выбора при прокрутке

enter image description here

Существует QTableView.selectRow(rowNo), но у вас есть предложения, где это назвать?

В идеале, я бы хотел, чтобы прокрутка выбранной строки была в центре.

ответ

0

Я сделал это так (PyQt4):

Upon инициализации я подключиться к ScrollBar событие:

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()). Возможно, вам придется немного поправить положение. т. е. перемещать его по размеру заголовков. Если у вас есть индекс, вы можете просто позвонить .row() метод

Смежные вопросы