尝试捕获鼠标位置时,QTreeView上的DoubleClick事件无效

问题描述 投票:3回答:1

我正在使用Python 3.6和pyqt 4.11。我在Widget中堆叠了两个QTreeView,它们都显示一些批处理作业,因此每个步骤都可以展开以显示所有功能。我希望能够双击树视图的一行并生成一个弹出对话框,我可以在其中编辑双击的功能参数。

如果我连接双击信号而没有捕获位置:

self.connect(self.QTreeView, QtCore.SIGNAL('mouseDoubleClickEvent()'),print('OK'))

它工作正常,打印好。

但是,一旦我试图捕捉光标位置,就不会再发生任何事情了。我已经尝试将整个小部件和treeView连接到一个简单的测试函数。它根本不起作用,甚至没有OK打印。


self.connect(self.QTreeView, QtCore.SIGNAL('mouseDoubleClickEvent(const QPoint &)'),self.showDlg)

def showDlg (self, point):
        print ('OK')
        treeidx=self.treeview.indexAt(point)
        print (treeidx)

通过右键单击整个Widget来触发ContextMenu,它可以正常工作

self.QTreeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)   

self.connect(self.QTreeWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.customMyContextMenu)

但是双击相同的Widget不会产生任何结果

self.connect(self.QTreeWidget, QtCore.SIGNAL('mouseDoubleClickEvent(const QPoint &)'),self.showDlg)

我想使用指针位置来知道树视图的哪个叶子必须发生变化,我认为treeview.indexAt(point)将是这样做的方式,但由于我的简单函数根本没有被调用,所以必须有我没看到的其他一些问题。

python pyqt pyqt4 qtreeview
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.