[gelöst] Tableview/SqlRelationalTableModel Hintergrundfarbe

Alles rund um die Programmierung mit Qt
Antworten
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

[gelöst] Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von Fenriswolf »

N Abend liebes Forum,
ich komme mal wieder nicht weiter :(
Wie der Titel schon sagt, möchte ich in meinem TableView/SqlRelationalTableModel die Hintergrundfarbe ändern.
Wie das mit einer vordefinierten Zelle möglich ist, hab ich bereits herausgefunden:

Code: Alles auswählen

QVariant MySqlRelationModel::data(const QModelIndex &index, int role) const
{
    int row = index.row();
    int col = index.column();

    if(role == Qt::BackgroundRole)
    {
        if (row == 1 && col == 2)  //change background only for cell(1,2)
        {
            QBrush Background(color);
            return Background;
        }
    }
    return QSqlRelationalTableModel::data(index, role);
}
doch wie kann ich das unter bestimmten Bedingungen machen? (z.b. in der Zelle steht "Arbeit")
SqlRelationalTableModel.setData funktioniert leider nicht (oder ich hab mich zu doof angestellt): :oops:

Code: Alles auswählen

model->setData(model->index(1,3),QBrush(Qt::red), Qt::BackgroundRole);
kann mir jemand nen Hinweis geben? Leider Stoße ich bei der Suche immer nur auf die gleichen Lösungen :cry:

Bin wie immer für jede konstruktive Hilfe dankbar :)
Zuletzt geändert von Fenriswolf am 19. November 2014 16:49, insgesamt 2-mal geändert.
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von MichaelS »

doch wie kann ich das unter bestimmten Bedingungen machen? (z.b. in der Zelle steht "Arbeit")
Der data() Methode von QModelIndex kannst Du die gewünschte Rolle übergeben. Damit kannst Du Dir den Inhalt der Zelle holen und diesen prüfen.

Code: Alles auswählen

    int row = index.row();
    int col = index.column();

    if(role == Qt::BackgroundRole)
    {
         QString inhalt = index.data( Qt::DisplayRole ).toString(); 
       
         if ( inhalt == "Arbeit" )  //change background if cell contains 'Arbeit'
        {
            QBrush Background(color);
            return Background;
        }
    }
    return QSqlRelationalTableModel::data(index, role);
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von Fenriswolf »

Hallo Michel,
So einfach ist das?!
Hätte gedacht, das ist komplizierter.

Dann muss ich aber noch eine Frage fragen :D
Über das model kann ich den Zellinhalt abfragen.
Wie kann ich eine komplette Spalte aufgrund von Infos im Header einfärben? Diese Info wird ja nicht mitgeliefert.
Wenn ich jetzt raten müsste, muss ich ebenso für das TableView vorgehen. Also neue Klasse erstellen, alte vererben, Infos abfangen und anpassen.

Bin derzeit nicht daheim, werd das nachher nochmal probieren
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von MichaelS »

Wie kann ich eine komplette Spalte aufgrund von Infos im Header einfärben? Diese Info wird ja nicht mitgeliefert.
Wenn mit 'Infos im Header' die Spaltenüberschriften gemeint sind - auf deren Inhalt kannst Du mit der Methode headerData zugreifen:

Code: Alles auswählen

 
     if( role == Qt::BackgroundRole )
    {
         QString inhalt = headerData( index.column(), Qt::Horizontal, Qt::DisplayRole ).toString(); 
       
         if ( inhalt == "Arbeit" )  //change background if cell header contains 'Arbeit'
        {
            QBrush Background(color);
            return Background;
        }
    } 
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von Fenriswolf »

:shock: oh man, das ist ja fast schon zu einfach :D
warum findet man dann im Netz immer nur so schwierige Antworten?

Danke dir, hast mir sehr geholfen
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: Tableview/SqlRelationalTableModel Hintergrundfarbe

Beitrag von MichaelS »

Fenriswolf hat geschrieben:warum findet man dann im Netz immer nur so schwierige Antworten?
Es führen eben viele Wege nach Rom :-)
Fenriswolf hat geschrieben:Danke dir, hast mir sehr geholfen
Freut mich, dass ich helfen konnte.
Antworten