Jak zaimplementować itemChecked i itemUnchecked sygnały dla QTreeWidget w PyQt4?

Gdzie są sygnały itemChecked i itemUnchesked on theQTreeWidget?

Qt Signals: (quote from PyQt4 QTreeWidget documentation page)

void currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)
void itemActivated (QTreeWidgetItem *,int)
void itemChanged (QTreeWidgetItem *,int)
void itemClicked (QTreeWidgetItem *,int)
void itemCollapsed (QTreeWidgetItem *)
void itemDoubleClicked (QTreeWidgetItem *,int)
void itemEntered (QTreeWidgetItem *,int)
void itemExpanded (QTreeWidgetItem *)
void itemPressed (QTreeWidgetItem *,int)
void itemSelectionChanged ()

W tej chwili rozwiązałem to w ten sposób:

self.treeWidget.itemClicked.connect (self.handle)

def handle (item, column): 
    print 'emitted!', item.text(column)
    if item.checkState(column) == QtCore.Qt.Checked:
        # there are a lot of my functions inside which work with item data
        self.handleChecked(item, column)
    elif item.checkState(column) == QtCore.Qt.Unchecked:
        self.handleUnchecked(item, column)

Ale to dla mnie złe rozwiązanie, ponieważitemClicked emitowane w naprawdę wielu przypadkach. Emitowano go w przypadku kliknięć lewą / prawą myszą na tekście elementu, co jest absolutnie niepotrzebne (mam ciężkie funkcje w self.handleChecked, a niepotrzebne ich wywołania w menu kontekstowym są kiepskie).

Cóż, próbowałem też użyćitemChanged:

self.treeWidget.itemChanged.connect (self.handle)

ale w ten sposób sytuacja jest jeszcze gorsza! Funkcja self.handle wywołuje się rekurencyjnie w nieskończoność i poza nią, ponieważ moje funkcje w self.handleSprawdzają zmiany danych elementu i ten sygnał jest emitowany ponownie i ponownie. Potrzebuję również sygnału, który emituje tylko przełączanie pola wyboru.

Czy ktoś może mi powiedzieć, co robię źle?

questionAnswers(1)

yourAnswerToTheQuestion