Rote Elemente in einer QListView

Alles rund um die Programmierung mit Qt
Antworten
TimeForGold
Beiträge: 31
Registriert: 28. Januar 2007 14:27

Rote Elemente in einer QListView

Beitrag von TimeForGold »

Hallo zusammen,

ich möchte bestimmte Elemente in einer QListView nicht mit schwarzen Text, sondern mit roten Text haben. Ich muss eine QListView verwenden, weil ich ein Datenmodell verwende. Könnt Ihr mir vielleicht weiter helfen?

Danke

TimeForGold
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Schau dir ForegroundRole an, die ist für sowas da.
TimeForGold
Beiträge: 31
Registriert: 28. Januar 2007 14:27

Beitrag von TimeForGold »

Das geht in die richtige Richtung, aber ich habe noch nicht herausgefunden wie ich eine individuelle Farbe dort zuweisen kann. Außerdem wenn ich die Funktion aufrufe mit einer der Werte aus dem enum passiert bei mir nicht wirklich was.

Das hatte ich zum testen mal aufgerufen, ist aber nichts passiert:

Code: Alles auswählen

pcListViewKoDo->setForegroundRole(QPalette::Background);

Ich rufe die Funktion in dem Kontext auf, wo ich die QListViews initialisiere.
marco
Beiträge: 41
Registriert: 6. Dezember 2006 23:46
Wohnort: Niederrhein

Beitrag von marco »

da ich meist ohnehin mit selbst konstruierten models arbeite, setz ich in

Code: Alles auswählen

QVariant Q****Model::data(const QModelIndex &index, int role)
einfach so etwas in der art

Code: Alles auswählen

if (role == Qt::ForegroundRole) {
  if (BEDINGUNG()) return qVariantFromValue(QColor(Qt::red));
}
das sollte dir weiterhelfen.
Gruß, Marco
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag von @udisello »

Hallo,

habe ein ListWidget und dort kann ich die Schriftfarbe der Element folgendermaßen ändern:

Code: Alles auswählen

QPalette Pal( this->palette() );
QColor Col( 255, 0, 0, 255 );
Pal.setColor( QPalette::Text, Col  );
this->setPalette( Pal );
Vielleicht funktioniert das bei Dir.
MfG @udisello

Qt Version 4.3.0, MS VS 2005
Antworten