PyQt4 - 在QListView中按下Enter键

1 投票
1 回答
3320 浏览
提问于 2025-04-16 12:18

你好。

我有一个QListView(就是一种显示列表的控件),到目前为止我只知道怎么用它自带的信号。我找不到任何关于在列表中的某个项目上按下回车键(QStandardListItem)时的信号,也找不到任何键按下事件(keyPressedEvents)。

有没有办法把QListView和这样的事件连接起来呢?怎么做呢? :)

谢谢!

1 个回答

4

使用事件过滤器:比如在列表容器的设置界面中,做如下操作:

# 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 是与回车键绑定的逻辑事件。你可以用其他方法来捕捉这个事件,但我展示的这个方法应该能给你指明方向。

撰写回答