QTには、eventFilter
「キャプチャ」する がありQEvent.MouseButtonRelease
ます。だから私がしたことは、ユーザーがノードをクリックした場合にイベントeventFilter
をフィルタリングする独自のインストールです。QEvent.MouseButtonRelease
私のリストオブジェクトには、次のメソッドがあります。
def mousePressEvent (self, e):
self.colapse_expand_click = False
if <user clicked node>:
colapse_expand_node()
e.accept ()
self.colapse_expand_click = True
のmousePressEvent
前に実行されmouseReleaseEvent
ます。
次に、カスタム コンボボックスで、イベントをフィルター処理します。
class RevisionSelectorWidget(QtGui.QComboBox):
def __init__(self, parent = None):
QtGui.QComboBox.__init__(self, parent)
self.log_list = RevisionSelectorLogList(self)
self.setView(self.log_list)
self.log_list.installEventFilter(self)
self.log_list.viewport().installEventFilter(self)
def eventFilter(self, object, event):
if event.type() == QtCore.QEvent.MouseButtonRelease:
if self.log_list.colapse_expand_click:
return True
return False