2013-03-16 16 views
6

Ich habe eine QTableView, die Datenzeilen aus einer Datenbank enthält. Wenn Sie jedoch setAlternatingRowColors (true) setzen, werden nur Zeilenfarben mit Daten verschoben - der Rest der Tabelle ist nur weiß, was nicht das erwartete Verhalten ist (z. B. in der Lesezeichenliste eines Browsers) - leere Zeilen haben sich geändert Farben).Qt: QTableWidget/QTableView wechselnde Zeilenfarben im gesamten Ansichtsfenster

Kennt jemand einen Workarund oder eine Alternative zu den von Qt gelieferten Tabellenansichten? Ich habe mit Stylesheets und Item-Delegaten getüftelt, dasselbe Ergebnis.

+0

Haben Sie selbst etwas gefunden? Ich habe das gleiche Problem. – PrisonMonkeys

+2

Ich endete stattdessen mit einem QTreeView/QTreeWidget. Es ist einfach, sie sich wie Tische zu verhalten. Offensichtlich sollten sich QTable * und QTree * jedoch genauso verhalten, wenn Sie leere Zeilen mit wechselnden Farben ausfüllen, aber ... – Zumteufel

Antwort

2

Sie könnten data() Methode des Modells wie folgt neu implementieren:

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

Es sollte möglich sein, das gleiche mit einem Delegierten setModelData() mit zu tun.

+0

Funktioniert das für leere Datenzeilen? – Zumteufel

+0

Sollte. In meinem Fall funktioniert es. Sie können versuchen, es wird nicht viel Zeit brauchen. – Funt