Cita:
Iniciado por dehm ahora me encuentro que la tecla F2 ya no activa el modo de edición
Con eso ahora mismo no puedo ayudarte. Quiero decir, no se qué cambios has realizado por lo que no puedo deducir qué tienes que cambiar para que vuelva a funcionar.
Publicar el código del filtro de eventos así como de su uso sería un buen punto de partida.
Cita:
Iniciado por dehm No veo en QTableView ni en QAbstractItemView ninguna función que indique si hay una fila seleccionada.
La selección corre a cargo de QItemSelectionModel. Mira en QTableView::selectionModel().
Cita:
Iniciado por dehm Me gustaría que cuando cambiase el contenido de una celda se activase una función o señal que llamase a una función que se encargara de hacer alguna función asociada (realmente sería actualizar el dato en la fuente original, más allá del modelo)
El modelo tiene un método llamado setData que es llamado cuando se realizan cambios en el modelo... prueba a colocar ahí la lógica correspondiente.
Código C++:
Ver originalbool Modelo::setData(const QModelIndex &index, const QVariant &value, int role)
{
if( role == Qt::EditRole )
emit HaCambiadoElModelo();
}
Cita:
Iniciado por dehm El caso es que una de las columnas es un QComboBox donde se pide/muestra el sexo de una persona, pero en lugar de poner texto sale un pequeño icono de un niño o una niña (es para los sobrinos, je je). Pero para que me mantenga el índice actual cuando paso por esa celda en modo de edición, he de enviar junto al icono, el índice asociado, y entonces se me ve el icono junto a un número (0 niños, 1 niñas). Y me gustaría que no se viera el número pero que no se perdiera el índice.
Los modelos gestionan la información en base a roles. DisplayRole se llama cuando se quiere visualizar el contenido de la celda mientras que DecorationRole se usa para mostrar una imagen junto al contenido de la celda... por poner un par de ejemplos.
Siguiendo esa dinámica encuentras UserRole que sirve como punto de partida para definir roles personalizados. La idea es definir un rol personalizado para recuperar el identificador asociado a una imagen. La vista nunca va a preguntar por ese rol porque no sabe ni que existe ni tampoco qué hacer con el. Es un rol para tus usos propios:
Código C++:
Ver originalconst int ImageIndexRole = Qt::UserRole+1;
QVariant Modelo::data(const QModelIndex &index, int role) const
{
switch( role )
{
case ImageIndexRole:
// Devuelves el índice de la imagen
break;
}
}
Y para preguntar por este dato:
Código C++:
Ver originalModelo model;
QModelIndex index = model.index(0,0);
qDebug() << model->data(index,ImageIndexRole);
Un saludo.