我正在使用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)
将是这样做的方式,但由于我的简单函数根本没有被调用,所以必须有我没看到的其他一些问题。