Seite 1 von 1

QtableView Textfarbe bestimmter Zeilen aendern

Verfasst: 18. Mai 2007 17:29
von fernand
Hallo
Habe folgendes Problem
Möchte in eimen TableView in Feldern der Kolonne 1 den Text rot schreiben falls Kolonne 5 zb den Wert 0 hat.
benutze zur Zeit ein Qsqlquerymodel.
besten Dank im Voraus

Verfasst: 18. Mai 2007 17:44
von upsala
QSqlQueryModel ableiten und data() überschreiben. Qt::ForegroundRole dann verwenden um die Textfarbe zu vergeben...

Verfasst: 18. Mai 2007 17:56
von fernand
Danke für die schnelle Antwort
Klappt prima ,aber wie kann ich auf den Wert einer anderen Kolonne
in der Methode data() zugreifen

Verfasst: 18. Mai 2007 19:03
von upsala
Auch mit data() ?

Verfasst: 18. Mai 2007 20:52
von upsala

Code: Alles auswählen

class MyModel : public QSqlQueryModel {
Q_OBJECT
public:
  MyModel(QObject *parent=0) : QSqlQueryModel(parent) {};
  ~MyModel() {};

  QVariant data (const QModelIndex &item, int role=Qt::DisplayRole) const
  {
    if (item.isValid() && 
        item.column()==1 && 
        role==Qt::ForegroundRole &&
        index(item.row(), 5, item.parent).data().toInt()==0) {
      return QColor(Qt::red);      
    }

    return QSqlQueryModel::data(item, role);
  }
}

Verfasst: 18. Mai 2007 21:12
von fernand
Bei jedem Aufruf von data() habe ich aber immer nur den Wert eines Feldes zur verfügung dh bei Feld 1 stehen keine Werte von Feld 5 bereit die mir erlauben sollen Feld 1 anders auszugeben

Verfasst: 18. Mai 2007 21:46
von upsala
Was soll man da noch sagen?

Verfasst: 19. Mai 2007 14:46
von fernand
Habe mit der Class MyModel probiert,erhalte aber beim Compilieren immer die Fehlermeldung
no matching function for call to "MyModel::index(int,int,<unknown type>)const

Verfasst: 20. Mai 2007 15:56
von fernand
Alles funktionniert mit dem angegebenen Code
Besten Dank nochmals
Fernand