docs: def _itemComboBox(self, item, column):
          """This returns the QComboBox associated with item and column, or creates a new one if
          it hasn't been created yet. The reason we don't create a combobox immediately is because
          the item needs to be inserted into its QTreeWidget first."""
          if item.treeWidget() is not self:
              return None
          combobox = self.itemWidget(item, column)
          if not combobox:
              combobox = QComboBox(self)
              # combobox.setSizeAdjustPolicy(QComboBox.AdjustToContents)
              self.setItemWidget(item, column, combobox)
              width = 0
              for num, (name, icon) in enumerate(item._combobox_option_list[column]):
                  if icon:
                      combobox.addItem(icon, name)
                  else:
                      combobox.addItem(name)
                  width = max(width, self._fontmetrics.width(name) + (icon and 16 or 0))
              combobox.setCurrentIndex(item._combobox_current_index[column])
              item._combobox_changed[column] = Kittens.utils.curry(self._updateItemComboBoxIndex, item, column)
              QObject.connect(combobox, SIGNAL("currentIndexChanged(int)"), item._combobox_changed[column])
              QObject.connect(combobox, SIGNAL("currentIndexChanged(int)"), self._emitUpdatedSignal)
              # resize section if needed
              width += 32
              if width > self.header().sectionSize(column):
                  self.header().resizeSection(column, width)
          return combobox