Python PyQt5-无法捕获子类中的mousePressEvent
我是PyQt的新手,在设置信号/插槽时遇到问题 我有一个Python PyQt5-无法捕获子类中的mousePressEvent,python,qt,user-interface,pyqt5,Python,Qt,User Interface,Pyqt5,我是PyQt的新手,在设置信号/插槽时遇到问题 我有一个QTreeView小部件,它的父部件是QTabWidget,它本身位于QWidget内部,它的节点是一个自定义对象,节点,它继承自QWidget 我想启用单击节点,通过信号/插槽触发附带的QTableView中模型数据的更改 初始化器和重写节点中的mousePressEvent(),如下所示: class Node(QtWidgets.QWidget):
QTreeView
小部件,它的父部件是QTabWidget
,它本身位于QWidget
内部,它的节点是一个自定义对象,节点
,它继承自QWidget
我想启用单击节点,通过信号/插槽触发附带的QTableView
中模型数据的更改
初始化器和重写节点中的mousePressEvent()
,如下所示:
class Node(QtWidgets.QWidget):
def __init__(self, name, parent=None):
super(Node, self).__init__(parent)
self._name = name
self._children = []
self._parent = parent
if parent is not None:
parent.addChild(self)
trigger = QtCore.pyqtSignal(int, int)
def mousePressEvent(self, event):
event.accept()
print("Node clicked!")
self.trigger.emit() # this would have variables...
单击树中的节点
项时,未捕获鼠标事件
我确信这与我如何设置小部件和/或mousePressEvent()
的工作方式有关,但我整天都在毫无乐趣地试图解决这个问题 我在这里走错了路。访问用户定义的QTreeView
项的正确方法是使用QModelIndex.internalPointer()
方法和qabstractemview.clicked()
信号
例如
我走错了路。访问用户定义的QTreeView
项的正确方法是使用QModelIndex.internalPointer()
方法和qabstractemview.clicked()
信号
例如
self.selectionTree.clicked.connect(self.get_single_return_data)
# ...
def get_single_return_data(self, index):
print("Signal triggered", index.internalPointer())
p = index.internalPointer()
# do something with p