【发布时间】:2010-07-22 10:50:42
【问题描述】:
我正在尝试在我的树视图中启用删除键。这是我目前所拥有的:
class delkeyFilter(QObject):
delkeyPressed = pyqtSignal()
def eventFilter(self, obj, event):
if event.type() == QEvent.KeyPress:
if event.key() == Qt.Key_Delete:
self.delkeyPressed.emit()
print 'delkey pressed'
return True
return False
我像这样连接eventfilter:
filter = delkeyFilter(self.dataTreeView)
self.dataTreeView.installEventFilter(filter)
为什么我在创建过滤器时需要传递self.dataTreeview?没有它就不行。
【问题讨论】:
-
我认为(但不确定,因此不作为答案发布)如果没有父级,Python 的垃圾收集器会吃掉你的过滤器,因为安装了事件filter 不会创建引用(在 python 方面)。要验证这一点,请尝试保留对
filter的引用(例如说self.filter = ...),但不要传递父级。