QTable View - Einzelne Spalten farblich hinterlegen

Alles rund um die Programmierung mit Qt
Antworten
Illuminatus
Beiträge: 84
Registriert: 3. Dezember 2008 12:48

QTable View - Einzelne Spalten farblich hinterlegen

Beitrag von Illuminatus »

Hi,
wisst ihr zufällig wie man einzelne Spalten farblich in einer QTableView hinterlegen kann?

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

Beitrag von upsala »

Im Model die richtige BackgroundRole zurückgeben.
Illuminatus
Beiträge: 84
Registriert: 3. Dezember 2008 12:48

Beitrag von Illuminatus »

hi sry aber das sagt mir gar nichts?
kannst du das eventuell ein bisschen genauer erklärn?

lg
marc
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Eigene Klasse schreiben die von der View erbt, in der überschreibst du dann einfach die Data Methode. Ist hier schon öfter diskutiert worden. Denke mal die Suche verhilft dir zu Snippets
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )
und für die role setzt du halt Qt::BackgroundRole.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Welches Model wird eigentlich verwendet?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

wieder einmal hat der Upsalla recht ;-)

muss meinen Post korrigieren-meine AW bezog sich darauf das es sich um ein QSqlQueryModel (zB) handelt das mit dem View verknüpft ist.

in dem Fall sollte das hier helfen

Code: Alles auswählen

class MyCustomSqlModel :public QSqlQueryModel
{
	Q_OBJECT

public:
	 MyCustomSqlModel(QObject *parent = 0){}
	~MyCustomSqlModel(){}
     QVariant data(const QModelIndex &item,int role = Qt::DisplayRole ) const;	
};
und das dann in etwa so implementieren

Code: Alles auswählen

QVariant MyCustomSqlModel::data(const QModelIndex &index, int role) const
 {
     QVariant value = QSqlQueryModel::data(index, role);

	 QModelIndex  KeyIndex = QSqlQueryModel::index(index.row(), 0);
	 
	 if (index.column() == 0 &&  role==Qt::BackgroundRole/*&& value.isValid()*/)
	 {

		if (index.data().toString().compare("unbekannt") == 0) // wartet
		 {
			 return QColor(255,113,113) ;

		 }
	 }
     return value;
Antworten