Me gustaría dibujar textos en una de las columnas en un widget QTreeView utilizando un color personalizado (dependiendo de los datos relacionados con cada fila). Traté de sobrecargar el drawRow() método protegido y cambiar el parámetro de opción de estilo como esto (un ejemplo sin accesorios):Color de texto personalizado para ciertos índices en QTreeView
virtual void drawRow(QPainter* p_painter, const QStyleOptionViewItem& option,
const QModelIndex& index) const
{
QStyleOptionViewItem optionCustom = option;
if (index.column() == 2)
{
optionCustom.palette.setColor(QPalette::Text, Qt::red);
}
QTreeView::drawRow(p_painter, optionCustom, index);
}
Pero obviamente me falta algo porque esto no parece funcionar (Intenté cambie también la función de color QPalette::WindowText
).
Gracias! No sabía que el método 'data()' se usa también para la apariencia del elemento. Implementé lo que quería usando un delegado de elementos personalizados, con un método 'paint()' anulado, pero usar el método 'data()' es mucho más elegante. –
@ VladoKlimovský sí, pero hay algunos puristas que no creen que deba usarse para la apariencia, ya que quieren que el contenido y la apariencia se manejen por separado (modelo frente a delegado). – neuronet