QTableView - изменить выбор при прокрутке - PullRequest
1 голос
/ 27 декабря 2011

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

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

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Вы можете использовать метод .indexAt (viewport (). Pos ()). Возможно, вам придется немного исправить положение. т.е. переместить его по размеру заголовков. Когда у вас есть индекс, вы можете просто вызвать метод .row ()

0 голосов
/ 28 декабря 2011

Я сделал это так (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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...