Я работаю с Python 3.6 и pyqt 4.11. У меня есть два 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)
ContextMenu вызывается щелчком правой кнопкой мыши по всему виджету, и он работает
self.QTreeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.connect(self.QTreeWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.customMyContextMenu)
Но двойной щелчок по одному и тому же виджету не дает результата
self.connect(self.QTreeWidget, QtCore.SIGNAL('mouseDoubleClickEvent(const QPoint &)'),self.showDlg)
Я хотел бы использовать позицию указателя, чтобы знать, на каком листе дерева должны произойти изменения, подумал я
treeview.indexAt(point)
было бы способом сделать это, но, поскольку моя простая функция не вызывается вообще, должна быть какая-то другая проблема, которую я не вижу.