2013-03-16 14 views
6

Ho un QTableView contenente righe di dati da un database. Tuttavia, l'impostazione di setAlternatingRowColors (true) alterna solo i colori delle righe che contengono dati: il resto della tabella è solo bianco, che non è il comportamento che ci si aspetterebbe (ad esempio, nell'elenco dei segnalibri di qualsiasi browser, le righe vuote si alternano colori).Qt: QTableWidget/QTableVista colori alternati riga in vista intera

Qualcuno conosce un workarund o un'alternativa alle viste di tabella fornite da Qt? Ho manipolato i fogli di stile e i delegati degli articoli, lo stesso risultato.

+0

Avete trovato qualcosa da soli? Ho lo stesso problema. – PrisonMonkeys

+2

Ho finito per usare invece QTreeView/QTreeWidget. È facile farli comportarsi come tavoli. Tuttavia, ovviamente una QTable * e una QTree * dovrebbero comportarsi allo stesso modo per quanto riguarda la compilazione di righe vuote con colori alternati, ma ... – Zumteufel

risposta

2

Si potrebbe reimplementare data() metodo del modello come questo:

QVariant MyModel::data(const QModelIndex& index, int role) const 
{ 
    if(role == Qt::BackgroundColorRole) 
     return color; 
    ... 
} 

Dovrebbe essere possibile fare lo stesso con un delegato utilizzando setModelData().

+0

Funzionerà per le righe di dati vuote? – Zumteufel

+0

Dovrebbe. Nel mio caso funziona. Puoi provare non ci vorrà molto tempo. – Funt