QTreeWidget激活项目信号

ser*_*rge 3 qt pyqt qtreewidget

我需要在QTreeWidget中的项目激活时执行一些操作,但是下面的代码不会给我预期的结果:

class MyWidget(QTreeWidget):

    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.connect(self, SIGNAL("activated(QModelIndex)"), self.editCell)


    def editCell(self, index):
        print index
Run Code Online (Sandbox Code Playgroud)

要么

 class MyWidget(QTreeWidget):

    def __init__(self, parent=None):
         super(MyWidget, self).__init__(parent)
         self.connect(self, SIGNAL("itemActivated(QTreeWidgetItem, int)"),
                      self.editCell)


     def editCell(self, item, column=0):
         print item
Run Code Online (Sandbox Code Playgroud)

我做错了什么或如何以正确的方式激活项目激活?

谢谢,塞尔

Geo*_*lly 7

如果你查看文档,你正在寻找的信号描述有一个星号.

QTreeWidget::itemActivated(QTreeWidgetItem *item, int column)
Run Code Online (Sandbox Code Playgroud)

这意味着您的连接调用应如下所示:

self.connect(self, SIGNAL("itemActivated(QTreeWidgetItem*,int)"), self.editCell)
Run Code Online (Sandbox Code Playgroud)

PyQt有一个很好的新API连接信号(我相信4.6版本).我推荐使用它.

self.itemActivated.connect(self.editCell)
Run Code Online (Sandbox Code Playgroud)