from PyQt4 import QtGui, QtCore

class ListDelegate(QtGui.QStyledItemDelegate):
    def createEditor(self, parent, option, index):        
        editor = QtGui.QComboBox(parent=parent)
        editor.addItem("Test1")
        editor.addItem("Test2")
        editor.addItem("Test3")
        editor.setFocusPolicy(QtCore.Qt.StrongFocus)
        editor.adjustSize()
        return editor
        
    def updateEditorGeometry(self, editor, option, index):
        editor.setGeometry(option.rect)            

if __name__ == '__main__':

    import sys

    app = QtGui.QApplication(sys.argv)

    groupBox = QtGui.QGroupBox("Proxy Widget Test")
    combo = QtGui.QComboBox()
    combo.addItem("AAAAAA")
    combo.addItem("BBBBBB")
    combo.addItem("CCCCCC")
    combo.addItem("DDDDDD")
    listWidget = QtGui.QListWidget()
    delegate = ListDelegate(listWidget)
    listWidget.setItemDelegate(delegate)
    for text in ["PPPPPPPP", "QQQQQQQQ", "RRRRRRRR"]:
        item = QtGui.QListWidgetItem(listWidget)
        item.setText(text)
        item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
    layout = QtGui.QVBoxLayout()
    layout.addWidget(combo)
    layout.addWidget(listWidget)
    groupBox.setLayout(layout)
    scene = QtGui.QGraphicsScene()
    proxy = scene.addWidget(groupBox)
    view = QtGui.QGraphicsView(scene)
    view.show()
    app.exec_()

