'*items* may be a list or a dict.
If a dict is given, then the keys are used to populate the combo box
and the values will be used for both value() and setValue().'

@ignoreIndexChange
@blockIfUnchanged
def setItems(self, items):

    prevVal = self.value()
    self.blockSignals(True)
    try:
        self.clear()
        self.addItems(items)
    finally:
        self.blockSignals(False)
    if (self.value() != prevVal):
        self.currentIndexChanged.emit(self.currentIndex())
