<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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