Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt:如何确定按下了哪个鼠标按钮以及在哪个QTableView';同时是谁的手机?_Python_Events_Pyqt_Mouse_Qtableview - Fatal编程技术网

Python PyQt:如何确定按下了哪个鼠标按钮以及在哪个QTableView';同时是谁的手机?

Python PyQt:如何确定按下了哪个鼠标按钮以及在哪个QTableView';同时是谁的手机?,python,events,pyqt,mouse,qtableview,Python,Events,Pyqt,Mouse,Qtableview,我用QTableView编写了一个PyQt应用程序,它应该插入一个新列以响应左键单击,并删除一个列以响应鼠标右键单击其单元格 我应该将处理程序连接到什么信号?如果使用,我可以接收列的索引,但无法确定鼠标按钮,因为它不接收事件 另一方面,如果我使用,我可以得到event.button(),但不清楚如何恢复单元格的索引 Qt有点让人想起薛定谔的不确定性:)您可以通过以下方式获得鼠标按钮的状态: 使用mousePressEvent,您可以使用获取索引: index = tableview.in

我用
QTableView
编写了一个PyQt应用程序,它应该插入一个新列以响应左键单击,并删除一个列以响应鼠标右键单击其单元格

我应该将处理程序连接到什么信号?如果使用,我可以接收列的索引,但无法确定鼠标按钮,因为它不接收事件

另一方面,如果我使用,我可以得到
event.button()
,但不清楚如何恢复单元格的索引


Qt有点让人想起薛定谔的不确定性:)

您可以通过以下方式获得鼠标按钮的状态:

使用
mousePressEvent
,您可以使用获取索引:

    index = tableview.indexAt(event.pos())

谢谢你,埃克胡洛。我忽略了mousePressEvent实际上不是一个信号,而是一个被称为
信号处理器
的函数,它发出
按下
的信号。我是否应该在QTableView实现中重新实现mousePressEvent,并从中显式发出
pressed
信号?@Bob。视情况而定。如果要保留
mousePressEvent
的所有现有功能,只需调用基类实现(即
QTableView.mousePressEvent(self,event)
)。但是,如果您想抑制某些现有功能,可能需要自己实现一些其他位(比如发出
按下的
)。好的,现在我尝试了两种变体:首先使用stock
QTableView
qApp
,然后使用子类化
QTableView
和重写事件处理程序。两者都很好。谢谢:)
    index = tableview.indexAt(event.pos())