2011-08-30 17 views
5

Aquí es lo que estoy tratando de conseguir (esto es un widget de QTableView + MVC basado en QAbstractTableModel con multiplican delegados):¿Cómo crear el modelo/vista QTableView con delegados personalizados (no editables)?

enter image description here

Notas:

  • Los delegados a no trabajan como editores, ¡son SOLAMENTE espectadores! No puedo editar el modelo con esta vista de tabla.

  • Los delegados deben ser realizables. Significa que toda la altura total de la fila AZUL podría ser de 25 píxeles o 250 píxeles.

  • MV es de datos simple:

    1ROW: CompanyName1 Nombre1, Nombre2, Nombre3 OTROS DATOS

    2ROW: CompanyName2 SingleName1 OTROS DATOS

    3row: CompanyName3 Nombre1, Nombre2 otros datos y así sucesivamente. ..

pregunta:

  • ¿Es posible crear un delegado personalizado (QItemDelegate, o QStyleItemDelegate), por ejemplo, a la 2da columna como en la imagen de arriba? Y si es posible, tal vez podría darme algunos ejemplos, o enlaces de recursos donde puedo verlos.

PS. Sí, he examinado todos los ejemplos de Qt Demo con delegados, pero simplemente no entiendo, cómo hacer lo que quiero.

PSS. QTableView ->setIndexWidget() Creo que no es una buena idea. Pero QTableView ->setItemDelegateForColumn(myCustomDelegate) métodos son mejores!

P3S. No busco la solución para la clase QTableWidget ...

¡Gracias por sus respuestas! :-)


Actualización # 1:

  • creo que:

    • Los delegados se utilizan únicamente para ediciones (por ejemplo, si estamos trabajando con el modelo/view object) y administrar elementos similares (all/just column/just row).

    • Los widgets personalizados son mejores, pero no los he encontrado en proyectos gratuitos de Qt. Y no es demasiado fácil obtener el código correcto y correcto de ese tipo de widgets ...


Adición:

  • Aquí es link a la similitud cuestión.
+0

¿Puede describir cómo obtiene los datos de su modelo? ¿Estás usando roles personalizados? Por ejemplo, ¿cómo obtendría 'CompanyName2' para una fila en particular? – Casey

+0

Por ahora, no tengo esa solución. Solo 'QTreeWidget' + mis widgets personalizados. En mi pregunta estoy buscando una respuesta que contenga la información sobre unirse a cosas como: vista de tabla, modelos y delegados todos juntos ... – mosg

+0

@mosg sería mucho más fácil responder si incluyes un ejemplo de trabajo mínimo completo en el que desea hacer X. Francamente, el ejemplo del delegado de la caja giratoria me pareció muy útil y simple. http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html. Trabajo en Python, así que no puedo ayudar mucho con detalles, aparte de la respuesta a continuación: en realidad es bastante fácil, solo reimplemente la pintura para un modelo de solo lectura. El resto del trabajo se remonta a la clase base de delegados. – neuronet

Respuesta

0

Los delegados no solo son útiles para crear widgets utilizados en la edición. También se usan para crear el aspecto general de cada índice visible (en este caso, una celda de tabla).

Puede personalizar la apariencia al volver a implementar el método paint() del delegado.

Cuestiones relacionadas