QStandarditem via Stylesheet formatieren

Alles rund um die Programmierung mit Qt
Antworten
Nukleus
Beiträge: 44
Registriert: 16. April 2010 13:32

QStandarditem via Stylesheet formatieren

Beitrag von Nukleus »

Hallo,
ich habe derzeit ein kleineres Problem, bei welchem ich versuche, über ein Stylesheet Eigenschaften von items einer QTableView zu setzen.
Dabei geht es nicht um alle items der Tabelle, sondern nur um einzelne Elemente, die z.B. auf Grund von bestimmten Eigenschaften die Textfarbe rot erhalten sollen.
Wenn ich die Zeilen direkt programmiere, wie im Code-Beispiel unten dargestellt, dann funktioniert die Textfarbe natürlich. Ich würde es aber gerne über ein Stylesheet lösen.

Code: Alles auswählen

        hilfsItem = new QStandardItem();					/* 6. Eintrag: Kursänderung absolut		*/
        hilfsItem->setForeground (QBrush(QColor("black")));		/* Annahme: alles i.O.				*/    
        if(query()->value(6).toDouble() < 0.00)					/* Frage: Ergebnis < 0				*/
        {											/* wenn ja...                                   		*/
	   hilfsItem->setForeground (QBrush(QColor("red")));		/* wenn ja: dann rot darstellen			*/
        };                                                              			/* Ende Frage: Ergebnis < 0, ja                   */


Damit ich über ein Stylesheet selektiv einzelne Komponenten ansprechen kann, muß ich denen entweder einen Objektnamen mitgeben oder eine dynamische Property. Beides setzt voraus, daß sich die Komponente von QObject ableitet und QStandardItem leitet sich nicht von QObject ab.

Ich habe gelesen, daß QTableView standardmäßig QStyledItemDelegate verwendet und letzteres leitet sich von QObject ab, verfügt also über die Methoden setProperty und setObjectName.

Ich fummle derzeit am Stylesheet und am Programm selbst herum, ohne daß ich der Lösung näher gekommen wäre. Z.B. habe ich im Code

Code: Alles auswählen

    
     pTable->itemDelegate(pModel->indexFromItem(hilfsItem))       	/* Diese Zeile ist nur ein Test                 	*/
                                    ->setProperty("redtext",true);      		/* setze: Roten Text                            	*/              
eingebaut und im zugehörigen Stylesheet die Anweisung:

Code: Alles auswählen

*[redtext = true] {color: red;}
Meine Codebeispiele ändern am Aussehen meiner Tabelle leider rein gar nichts.
Meine Frage: Geht das, was ich da will, überhaupt? Wenn ja, dann bräuchte ich Tips, für die ich sehr dankbar wäre.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QStandarditem via Stylesheet formatieren

Beitrag von Christian81 »

Einfach von QStandardItem ableiten, QStandardItem::data überladen und für Qt::BackgroundRole die entsprechende Farbe zurückliefern.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten