2012-03-22 11 views
6

Tengo la siguiente situación: Necesito crear un control de árbol personalizado, cuyas casillas de verificación también se personalizan. He hecho fácilmente la mayoría de las personalizaciones para el control de árbol mediante el uso de hojas de estilo; He tenido éxito agregando casillas de verificación a los artículos de QTreeView, pero estoy teniendo grandes problemas con la personalización de ellos. Necesito mostrar una imagen personalizada para el estado comprobado y otra para el estado no verificado.Personalizar las casillas de verificación de los elementos de un QTreeView

El lugar donde llegué a la conclusión de que esto se puede hacer es en mi subclase de QStyledItemDelegate, en el evento paint (es decir, CheckBoxItemDelegate :: paint). Lo que necesito es mostrar el texto, el ícono y la casilla de verificación para el ítem. Pero los problemas son:
- No puedo obtener el estilo del elemento (que configuré usando la hoja de estilo); de lo contrario, mi texto puede dibujarse con el color incorrecto;
- No conozco las rectas de cada subelemento (la casilla de verificación, el icono, el texto);
- No sé cómo obtener el ícono de un elemento (dado su QModelIndex) para dibujarlo.

P.S. Había subclasificado el QTreeView (obviamente) y, como estoy trabajando con QFileSystemModel, también he subclasificado para agregarle la funcionalidad de casilla de verificación.

¿Alguien puede ayudarme, por favor? ¿QStyledItemDelegate :: pintar el lugar adecuado para cambiar las imágenes de la casilla de verificación de los elementos del árbol? En caso afirmativo, ¿podría darme un pequeño ejemplo o algo así, cómo puedo hacer eso?

Respuesta

7

Esta es la forma I prestados elementos verificables dentro de un QTreeView con dos imágenes (ojo abierto/ojo cerrado, para representar a su estado de visibilidad) en lugar de una casilla de verificación:

ui.myTreeView->setStyleSheet(
    "QTreeView::indicator:unchecked {image: url(:/icons/eye_grey.png);}" 
    "QTreeView::indicator:checked {image: url(:/icons/eye.png);}" 
); 

Los productos que se deben establecer como comprobable, de curso. Espero que esto ayude.

+0

Eso es todo! ¡Muchas gracias! – Feoggou

Cuestiones relacionadas