Pregunta

Tengo un QTableView por lo que quiero para mostrar la última columna siempre en modo de edición. (Es un QComboBox donde el usuario debe ser capaz de cambiar siempre el valor.)

Creo que he visto la solución en el Qt documentación , pero no puedo 't encontrar más. ¿Hay una manera sencilla de hacerlo?

Creo que podría archivar este efecto mediante el uso de openPersistentEditor() de cada célula, pero estoy en busca de una mejor manera. (Al igual que especifica que sólo una vez para toda la columna.)

¿Fue útil?

Solución

Hay dos posibilidades:

setIndexWidget , pero escribe Trolltech:

  

Esta función sólo debe utilizarse para   mostrar contenido estático dentro de la   área visible correspondiente a un elemento   de datos. Si desea mostrar personalizada   contenido dinámico o implementar una costumbre   widget de editor, QItemDelegate subclase   en su lugar.

(Y se rompe el patrón Modelo / Vista ...)

de un delegado método paint . Pero aquí hay que poner en práctica todo como Habilitado / elementos deshabilitados usted mismo.

Otros consejos

Una forma de obtener el comportamiento de edición automática es llamar a la función setEditTriggers de la vista () con el valor QAbstractItemView :: AllEditTriggers.

Para visualizar el contenido de una columna dada de una manera determinada, echar un vistazo a QAbstractItemView :: setItemDelegateForColumn (). Esto le permitirá especificar un delegado a medida solo para aquellos artículos que lo necesitan. Sin embargo, no creará automáticamente un widget de editor para cada uno de ellos (que podría, en principio, miles de ellos), pero se puede utilizar el delegado para representar cada elemento de una manera que hace que se vea como un widget de editor.

El QAbstractItemModel :: banderas función virtual se llama para probar si un artículo es editable (ver Qt :: ItemIsEditable ). Echar un vistazo a Hacer el modelo editable en el Modelo / Vista Programación documentación.

No puedo ver una manera fácil de hacer esto, pero es posible que pueda administrar mediante un delegado. Sinceramente, no sé exactamente cómo funcionaría, pero usted debería ser capaz de conseguir algo de funcionar si se esfuerza lo suficiente. Si obtiene un delegado adecuada, usted debe ser capaz de establecer en toda una visión, una célula de una vista, o simplemente una columna o fila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top