Pregunta

¿Hay alguna señal (no puedo encontrar nada en los documentos) emitidos cuando el usuario inicia y termina el QTableView edición de celdas de widget?

Quiero ejecutar alguna función del modelo de tabla, luego el usuario comienza editar la celda eny y ejecutar otra función cuando el usuario finaliza la edición. ¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Acciones cuando el usuario inicia/termina la edición se puede realizar implementando la suya propia Delegar.

También hay datachanged señal en qAbstractitemModel.

Otros consejos

El problema con la señal Datachanged es que también se emite al cambiar los datos programáticamente (setData). Si el programa llama a SetData (), y la ranura no debe activarse, entonces la única solución es implementar un delegado personalizado.

QABStractItemView tiene métodos virtuales commitData y cierre de cierre, pero no toman el índice como parámetro y no estoy 100% seguro de que CurrentIndex () siempre sea correcto ... (seguro que Qaiv no confía en eso, debido a los editores persistentes , por lo que tiene un hash interno).

Derive una clase de QtableView y anularía la selección de funciones para implementar un comportamiento específico cuando el usuario comience a editar la celda y también anular la función Datachanged para implementar un comportamiento específico para después de que la celda se haya modificado.

Al igual que Graphite sugiere anteriormente, normalmente uso Datachanged en mi modelo, típicamente QSQLTableModel, para averiguar cuándo ha terminado la edición. Pero estoy de acuerdo en que tendría sentido tener señales para acciones de usuario más detalladas en QtableView.

connect(model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updatePlot()));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top