Vorrei disegnare i testi in una delle colonne in un widget QTreeView utilizzando un colore personalizzato (in base ai dati relativi a ciascuna riga). Ho cercato di sovraccaricare il drawRow() metodo protetto e modificare il parametro opzione di stile come questo (un esempio ridotto all'osso):Colore testo personalizzato per determinati indici in 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);
}
Ma ovviamente mi manca qualcosa perché questo non sembra funzionare (ho cercato di cambiare anche il ruolo di colore QPalette::WindowText
).
Grazie! Non sapevo che il metodo 'data()' è usato anche per l'aspetto dell'oggetto. Ho implementato ciò che volevo usando un oggetto delegato personalizzato, con un metodo 'paint()' sovrascritto, ma usare il metodo 'data()' è sempre molto più elegante. –
@ VladoKlimovský sì ma ci sono alcuni puristi che non pensano che dovrebbe essere usato per l'aspetto, in quanto vogliono che il contenuto e l'aspetto siano gestiti separatamente (modello vs delegato). – neuronet