Seite 1 von 1
QTable View - Einzelne Spalten farblich hinterlegen
Verfasst: 22. April 2009 11:53
von Illuminatus
Hi,
wisst ihr zufällig wie man einzelne Spalten farblich in einer QTableView hinterlegen kann?
lg
illu
Verfasst: 22. April 2009 12:17
von upsala
Im Model die richtige BackgroundRole zurückgeben.
Verfasst: 22. April 2009 13:14
von Illuminatus
hi sry aber das sagt mir gar nichts?
kannst du das eventuell ein bisschen genauer erklärn?
lg
marc
Verfasst: 22. April 2009 13:38
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
Verfasst: 22. April 2009 13:40
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.
Verfasst: 22. April 2009 17:23
von upsala
Welches Model wird eigentlich verwendet?
Verfasst: 22. April 2009 18:35
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;