/python-gui/comboxboxdelegate.py

https://github.com/RalphoPalpho/Cards-Against-Sanity
Python | 37 lines | 23 code | 11 blank | 3 comment | 2 complexity | b7f1b7ba400169448f0057e0465f1f91 MD5 | raw file
  1. from PySide.QtCore import *
  2. from PySide.QtGui import *
  3. class ComboBoxDelegate(QStyledItemDelegate):
  4. """
  5. copied extensively from here: http://stackoverflow.com/questions/10037529/custom-delegate-in-pyside
  6. """
  7. def __init__(self, model, parent=None):
  8. super(type(self), self).__init__(parent)
  9. self.parent= parent
  10. self.model= model
  11. def createEditor(self, parent, option, index):
  12. if not index.isValid():
  13. return False
  14. self.currentIndex=index
  15. self.comboBox = QComboBox(parent)
  16. self.comboBox.setModel(self.model)
  17. value = index.data(Qt.DisplayRole)
  18. self.comboBox.setCurrentIndex(value)
  19. return self.comboBox
  20. def setEditorData(self, editor, index):
  21. value = index.data(Qt.DisplayRole)
  22. editor.setCurrentIndex(value)
  23. def setModelData(self, editor, model, index):
  24. if not index.isValid():
  25. return False
  26. index.model().setData(index, editor.currentIndex(), Qt.EditRole)