QTableView: Background mehrerer Zeilen festlegen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
WebDepp63
User
Beiträge: 13
Registriert: Mittwoch 16. August 2023, 10:40

Hallo Foren-Mitglieder,

ich habe folgendes Problem. Wahrscheinlich ist die Lösung recht einfach aber im Moment habe ich scheins einen Blackout.
In einem QTableView werden zu Aufträgen einer Haupttabelle, Teilaufträge zu jedem dieser Hauptaufträge gelistet.
Die Tabelle der Teilaufträge ist sortiert nach Hauptauftragnr. und Erstellzeitstempel
Ein Beispiel:
Haupttabelle mit Aufträgen:
Auftragsnr.1 | Auftragsinhalt
Auftragsnr.2 | Auftragsinhalt

Tabelle der Teilaufträge:
Auftragsnr.1 | Zeitstempel 1 | Teilauftragsnr.1 | Teilauftragsinhalt
Auftragsnr.1 | Zeitstempel 2 | Teilauftragsnr.2 | Teilauftragsinhalt
Auftragsnr.2 | Zeitstempel 3 | Teilauftragsnr.3 | Teilauftragsinhalt
Auftragsnr.2 | Zeitstempel 4 | Teilauftragsnr.4 | Teilauftragsinhalt

Wird jetzt ein Teilauftrag zur Bearbeitung ausgewählt sollen alle Teilaufträge des zugehörigen Hauptauftrags markiert werden über eine entsprechende Background-Farbe.
Am Beispiel: Datensatz Teilauftragsnr. 3 wird gewählt. Dieser gehört zu (Haupt)Auftragsnr.2, d.h. dieser und auch der Datensatz Teilauftragsnr.4 sollen markiert werden, weil sie beide zu (Haupt)Auftragsnr.2 gehören.
Gibt es die Möglichkeit für eine Tabellenzeile in einem Rutsch die Background-Farbe zu setzen oder muss ich tatsächlich über alle Zellen laufen und für jede einzeln den Hintergrund setzen.
Und mache ich das per StyleSheet oder über QPalette oder, oder, oder
Es gibt scheinbar eine Reihe von Möglichkeiten aber ich habe Probleme damit welche die beste Möglichkeit wäre.
Ich muss auch ehrlich sagen, ich habe immer noch Probleme in Qt for Python die Objekthierarchie zu verstehen.

Viele Grüße und danke im Voraus für Antworten
Benutzeravatar
snafu
User
Beiträge: 6743
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Warum willst du die Hintergrundfarben selber setzen? Der QTableView bietet zum Selektieren einer Zeile und der entsprechenden grafischen Umsetzung (also farbliches Darstellen) die Methode selectRow() an. Das nimmt die gewünschte Zeile per Index an. Für das gleichzeitige Markieren von mehreren Zeilen geht man den Weg über view.selectionModel().select().
Antworten