PyQt QTableView - Capture KeyDown / KeyPress Event



我想在QTableView上捕获Key Down事件。我还想确定,如果是DEL按钮上的键下,我的QTableView是这样创建的(从QtCreator(:

self.tblview_data_sources = QtWidgets.QTableView(self.groupBox_2)
self.tblview_data_sources.setGeometry(QtCore.QRect(10, 20, 721, 121))
self.tblview_data_sources.setObjectName("tblview_data_sources")

如果它实际上是 DEL-Keydown,我想重新移动当前选择的行。

QTableView有这种方法keyPressEvent需要QKeyEvent- 如何获取此事件?

对于您的情况,您有以下可能的解决方案:

  1. keyPressEvent:使用 keyPressEvent方法,但为此,您必须创建一个继承自 QTableView 的类并覆盖该方法。

class TableView(QtWidgets.QTableView):
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Delete:
print("DELETE")
super(TableView, self).keyPressEvent(event)
...
def setupUi(self, SOME):
...
self.tblview_data_sources = TableView(self.groupBox_2) # change QtWidgets.QTableView to TableView
    eventFilter
  1. :使用eventFilter,为此你必须使用installEventFilter,但为此,你的类必须继承自从QObject继承的某个类,如果你使用的是Qt Designer,该类不是,这也涉及许多代码行,所以我将省略这个例子。

  2. QShortcut:我首选的解决方案是因为它的简单性,使用QShortcut


QtWidgets.QShortcut(QtCore.Qt.Key_Delete, self.tblview_data_sources, activated=self.someSlot)
...
def someSlot(self):
print("DELETE")

相关内容

  • 没有找到相关文章