QTableView Zellen ändern (Farbe und Inhalt)

Alles rund um die Programmierung mit Qt
Antworten
klaus85
Beiträge: 20
Registriert: 5. Oktober 2010 16:54

QTableView Zellen ändern (Farbe und Inhalt)

Beitrag von klaus85 »

Hallo,

ich habe eine QTableView, die Daten mittels eines Models aus einer DB bezieht. Ich hab dafür ein QItemDelegate, dass eine Zelle je nach Inhalt unterschiedlich gefärbt wird. Das klappt auch ganz gut.
Jetzt will ich aber die ganze Zeile einfärben entsprechend der Zahl in einer bestimmten Spalte. Wie mach ich das dann?

Außerdem würde ich gerne den Inhalt zur Laufzeit ändern bzw. dynamisch darstellen wollen. Ich habe in der DB eine Tabelle mit 2 Spalten, die sollten aber in einer Spalte in der QTableView angezeigt werden. Sagen wir in Spalte 1 der DB steht "2" und in der anderen "C", dann soll in der QTableView in EINER Spalte "2 C" stehen. Geht das irgendwie? Die Tabelle ist read-only...

Danke für die Hilfe...
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

du kannst deinem abgeleiteten QAbstractItemModel in der data(QModelindex , parent) Methode die Anforderung einer Qt::DisplayRole und dem ersten Spaltenindex "bla" so umschreiben das du dort "bla"+"blubb" (dem Modelindex der 2. Spalte) zurückgibst ... wenn die 2. Spalte mit Qt::DisplayRole angefordert wird, dann ein QVariant() zurückgeben ...
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du kannst in deinem QItemDelegate auch die Daten aus anderen Spalten abfragen. Siehe z.B. QModelIndex::sibling
klaus85
Beiträge: 20
Registriert: 5. Oktober 2010 16:54

Beitrag von klaus85 »

padreigh hat geschrieben:du kannst deinem abgeleiteten QAbstractItemModel in der data(QModelindex , parent) Methode die Anforderung einer Qt::DisplayRole und dem ersten Spaltenindex "bla" so umschreiben das du dort "bla"+"blubb" (dem Modelindex der 2. Spalte) zurückgibst ... wenn die 2. Spalte mit Qt::DisplayRole angefordert wird, dann ein QVariant() zurückgeben ...
ich leite mir also meine eigene model-klasse ab? Ist das nicht ein wenig umständlich, da immer eine eigene Klasse zu erstellen? Derzeit verwende ich als Model ein QSqlQueryModel. Also kann ich davon ableiten und dann halt die data-Methode neu implementieren?
upsala hat geschrieben:Du kannst in deinem QItemDelegate auch die Daten aus anderen Spalten abfragen. Siehe z.B. QModelIndex::sibling
danke, funktioniert klasse
Antworten