QTreeWidget активирует сигналы предметов - PullRequest
3 голосов
/ 14 апреля 2010

Мне нужно выполнить некоторые действия, когда элемент в 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

или

 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

Что я делаю не так или как правильно активировать пункт?

Заранее спасибо, Serge

1 Ответ

7 голосов
/ 14 апреля 2010

Если вы посмотрите документацию , то описание искомого сигнала помечено звездочкой.

QTreeWidget::itemActivated(QTreeWidgetItem *item, int column)

Это означает, что ваш соединительный вызов должен выглядеть следующим образом:

self.connect(self, SIGNAL("itemActivated(QTreeWidgetItem*,int)"), self.editCell)

PyQt имеет приятный новый API для подключения сигналов (начиная с версии 4.6, я считаю). Я рекомендую использовать его.

self.itemActivated.connect(self.editCell)
...