Tengo el siguiente problema con QT model/view framework. Quiero presentar un widget dentro de un elemento de vista de tabla.¿Cómo renderizar un widget complejo dentro de un elemento de vista de árbol en QT?
Primero mi pensamiento era utilizar
void QAbstractItemView::setIndexWidget(const QModelIndex & index, QWidget * widget)
Pero la documentación para esta función declara explícitamente:
Esta función sólo se debe utilizar para el contenido estático pantalla dentro del área visible correspondiente a un artículo de datos. Si desea mostrar el contenido dinámico personalizado o implementar un widget de editor personalizado , en su lugar, subclase QItemDelegate .
Por lo tanto, proponen utilizar delegados aquí. Bueno, hasta ahora todo bien. Sé que los delegados pueden usarse para crear un editor, que puede ser básicamente cualquier widget de QT. Pero aquí está el problema - No quiero que este widget sea un editor - Quiero renderizar el elemento con este widget siempre. Y no solo "renderizar", necesito que tenga el comportamiento exacto del widget.
Ahora el widget que quiero usar es un widget personalizado, que es un contenedor de algunos otros widgets (algunas casillas de verificación, algunos botones con algún diseño).
La solución que considero es la siguiente:
- Grab el aspecto de mi widget personalizado a un mapa de píxeles.
- Deje que el delegado se pinta utilizando este mapa de píxeles.
- Cuando el ratón está sobre un elemento provocará que la vista para iniciar automáticamente la edición (no me
sé cómo hacerlo todavía, pero supongo que es posible) - Vamos al delegado crear mi aparato como el editor de un artículo.
Esta solución parece funcionar, pero huele mal para mí. ¿Alguien puede pensar en una solución más elegante para este problema?
Gracias.
¿Qué quiere decir con "Necesito tener el comportamiento exacto del widget? –
Quiero interactuar con el usuario - para reaccionar en sus acciones – Lev
¿Qué tipo de interacciones desea?" Cada celda es exactamente eso, una célula. No es un artilugio, así que estoy teniendo dificultades para imaginar lo que realmente quieres en el camino de las interacciones. –