class_docstr: TreeWidgetItem that keeps track of its own widgets and expansion state.
  
    * Widgets may be added to columns before the item is added to a tree.
    * Expanded state may be set before item is added to a tree.
    * Adds setCheked and isChecked methods.
    * Adds addChildren, insertChildren, and takeChildren methods.
class_docstr_tok: ["TreeWidgetItem","that","keeps","track","of","its","own","widgets","and","expansion","state",".","*","Widgets","may","be","added","to","columns","before","the","item","is","added","to","a","tree",".","*","Expanded","state","may","be","set","before","item","is","added","to","a","tree",".","*","Adds","setCheked","and","isChecked","methods",".","*","Adds","addChildren",",","insertChildren",",","and","takeChildren","methods","."]
code: def setData(self, column, role, value):
      # credit: ekhumoro
      #   http://stackoverflow.com/questions/13662020/how-to-implement-itemchecked-and-itemunchecked-signals-for-qtreewidget-in-pyqt4
      checkstate = self.checkState(column)
      text = self.text(column)
      QtWidgets.QTreeWidgetItem.setData(self, column, role, value)
  
      treewidget = self.treeWidget()
      if treewidget is None:
          return
      if (
          role == QtCore.Qt.ItemDataRole.CheckStateRole
          and checkstate != self.checkState(column)
      ):
          treewidget.sigItemCheckStateChanged.emit(self, column)
      elif role in (
          QtCore.Qt.ItemDataRole.DisplayRole,
          QtCore.Qt.ItemDataRole.EditRole,
      ) and text != self.text(column):
          treewidget.sigItemTextChanged.emit(self, column)
  
imports: from ..Qt import QtCore, QtWidgets
label_desc: Use image node_id 17 for calling the TreeWidgetItem obj's underlying member method code with example usage: obj.setData(column, role, value) without return types