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