PyQt4 - введите клавишу, нажатую на элементе в QListView

Привет. У меня есть QListView, и пока я только понял, как использовать уже полученные сигналы. Я не могу найти никаких сигналов, когда клавиша ввода была нажата для элемента в списке (QStandardListItem). Также не могу найти какие-либо события keyPressedEvents.

Можно ли просто так «подключить» QListView к событию? Как? :)

Спасибо


person Johannes    schedule 22.02.2011    source источник


Ответы (1)


Используйте фильтрацию событий: например. в setupUi контейнера списка сделайте

# the self param passed to installEventFilter indicates the object which
# defines eventFilter(), see below:
self.list.installEventFilter(self)

а затем определите функцию API фильтра в этом контейнере:

def eventFilter(self, watched, event):
    if event.type() == QEvent.KeyPress and \
       event.matches(QKeySequence.InsertParagraphSeparator):
       i = self.list.currentRow()
       # process enter key on row i

Обратите внимание, что InsertParagraphSeparator — это логическое событие, связанное с клавишей Enter. Вы можете использовать альтернативные способы захвата события, но то, что я показал, должно указать вам правильное направление.

person Vinay Sajip    schedule 22.02.2011