Python 自定义QTreeview扩展事件方法
当我使用定义的“扩展”方法创建自己的自定义QTreeView时,是否需要执行任何特殊操作以发出默认信号?我已经注释掉了表示我所问问题的伪代码。或者我现在做的事情安全吗Python 自定义QTreeview扩展事件方法,python,pyside,signals-slots,qtreeview,Python,Pyside,Signals Slots,Qtreeview,当我使用定义的“扩展”方法创建自己的自定义QTreeView时,是否需要执行任何特殊操作以发出默认信号?我已经注释掉了表示我所问问题的伪代码。或者我现在做的事情安全吗 class JMTreeView(QtGui.QTreeView): changed = QtCore.Signal() def __init__(self): super(JMTreeView, self).__init__() self.expanded.connect(se
class JMTreeView(QtGui.QTreeView):
changed = QtCore.Signal()
def __init__(self):
super(JMTreeView, self).__init__()
self.expanded.connect(self.expanded_item)
def expanded_item(self, event):
print "expanded"
# super(JMTreeView, self).expanded(event)
与重写对话框的“showEvent”时的处理方式类似,我在函数末尾调用“super”。我是否需要添加类似于“扩展”方法的内容
def showEvent(self, event):
geom = self.frameGeometry()
geom.moveCenter(QtGui.QCursor.pos())
self.setGeometry(geom)
super(Browser, self).showEvent(event)
QTreeView
类没有扩展的方法。只有一个扩展的
信号。更重要的是,信号和插槽机制完全独立于事件系统,因此与重写受保护的方法(如showEvent
)没有并行性
大多数事件处理程序(如showEvent
)都与源于应用程序外部的活动相关。它们通常实现一些默认行为,但有时什么也不做。它们几乎都是虚拟方法,这意味着您可以提供自己的实现,Qt将调用该实现而不是默认实现。如果您的重新实现需要保留默认行为(或以某种方式修改),那么它可以通过调用基类实现来实现
相反,信号总是源于应用程序内部。它们没有默认的处理程序——它们只是广播消息(如无线电信标)。听者完全可以决定如何处理这些消息。不管是否从来没有任何侦听器,或者消息是否从未被处理过