QSqlQueryModel Zeilen makieren

Alles rund um die Programmierung mit Qt
Antworten
refresh77
Beiträge: 11
Registriert: 8. Januar 2008 14:51

QSqlQueryModel Zeilen makieren

Beitrag von refresh77 »

Hallo,
ich habe mir meine Klasse von QSqlQueryModel abgeleitet, um ein bischen Übersicht in eine unübersichtliche Tabelle zu bringen.

Code: Alles auswählen

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


  QVariant data (const QModelIndex &item, int role=Qt::DisplayRole) const
  {
	if (role==Qt::TextAlignmentRole) {
		return Qt::AlignRight;
	}
    if (item.isValid() &&
        item.column()==15 &&
        role==Qt::ForegroundRole &&
		item.data().toInt()<0) {
      return QColor(Qt::red);     
    }
    return QSqlQueryModel::data(item, role);
  }
};
jetzt wollte ich bestimmte Zeilen Farblich makieren.

Code: Alles auswählen

	  if(item.isValid() &&
		  item.column()==5 && 
		 item.data().toString()=="----" &&
		 role == Qt::BackgroundRole){
			 return QColor(Qt::red);
	  }
So war mein ansatz um erstmal die Zelle farblich zu hinterlegen, wirft aber gleich einen critical Error.
Kann mir jemand verraten warum? Und wie ichs besser mache?
:)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Auf den ersten Blick ist kein Fehler erkennbar. An welcher Stelle genau bricht der Debugger ab?
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Eventuell wäre auch ein QItemDelegate für Dich interessant.
refresh77
Beiträge: 11
Registriert: 8. Januar 2008 14:51

Beitrag von refresh77 »

richtig!
sieht nicht falsch aus!!

Code: Alles auswählen

role == Qt::BackgroundRole
Das ist anscheinent eine Entlosschleife...
Ich habe die beiden Leerzeichen entfernt und jetzt läuft das ^^.
Muss ich nur noch auf die Zeile ausweiten.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Sorry, aber dieser Fehler ergibt keinen Sinn.
refresh77
Beiträge: 11
Registriert: 8. Januar 2008 14:51

Beitrag von refresh77 »

Hat denn jemand ne Idee, wie ich die Farbe der Zeile ändere wenn in einer Spalte ein bestimmter wert steht?
Ich hab mir mal die Examples angeguckt.

Code: Alles auswählen

     table->item(9,0)->setBackgroundColor(Qt::lightGray);
Hinterher die Farbe zu änderen wäre wohl eine Möglichkeit.
Nur wird hier QTableWidget benutzt und ich benutze QTableView und meine Ableitung von QSqlQueryModel.

Ich dachte eigentlich auch, dass man so Sachen wie die Textfarbe im View ändert, weil im Model nur die Daten sind.
refresh77
Beiträge: 11
Registriert: 8. Januar 2008 14:51

Beitrag von refresh77 »

Sorry, aber dieser Fehler ergibt keinen Sinn.
obs Sinn macht oder nicht,

Code: Alles auswählen

	if(item.isValid() &&
		item.column()==5 && 
		role==Qt::BackgroundRole && 
		item.data().toString()=="----")
	{
		return QColor(Qt::white);
	}
So wird kein critical error mehr geworfen.
Antworten