En "createEditor" has creado un QComboBox, luego en "setEditorData" y "setModelData" has de interactuar con un QComboBox, no con un QLabel.
El widget o el mecanismo que use Qt para visualizar los datos fuera de la edición no es algo que te importe ahora mismo. Tú estás jugando ahora mismo con la edición.
* "createEditor" es una función que te permite personalizar el widget de edición que se va a usar al editar el contenido de una celda determinada
* "setEditorData" te permite definir el contenido para el widget creado anteriormente. Dado que has creado un widget que no es el que viene por defecto, tu eres el responsable de rellenarlo.
* "setModelData" te permite recuperar el contenido del widget de edición para almacenarlo en el modelo. Lo mismo que antes, es tu widget y tu tienes que saber cómo recuperar el contenido.
setEditorData debería quedar tal que (presupongo que en el modelo estás almacenando un int a modo de índice del icono. Si almacenas la ruta del icono tendrás que modificarlo):
Código C++:
Ver originalvoid MiDelegado3::setEditorData (QWidget * editor, const QModelIndex & index) const
{
QComboBox* miEditor = static_cast<QComboBox*>(editor);
miEditor->setCurrentIndex( index.data( ).toInt( ) );
}
y, para recuperar el contenido:
Código C++:
Ver originalvoid MiDelegado3::setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const
{
QComboBox* miEditor = static_cast<QComboBox*>(editor);
model->setData( index, miEditor->currentIndex( ) );
}
No puedo compilar el código porque no tengo el modelo completo. No obstante creo que este código debería funcionar.
Un saludo.