QT + Visual studio "Qtableview :cell color ändern

Alles rund um die Programmierung mit Qt
Antworten
galilio
Beiträge: 42
Registriert: 19. November 2013 08:16

QT + Visual studio "Qtableview :cell color ändern

Beitrag von galilio »

Hallo zusammen,

Wie ändere ich die Zellenfarbe von einem QTableview.
Folgende Anwendung verwende ich :
ich hole eine Tabelle aus einem SQL Server:
Dieses Tabelle wird in einem QTableView visualisiert so weit so gut ...
AbschnittCode: cpp

Code: Alles auswählen

     .....
   model = new QSqlRelationalTableModel(this);
  model->setTable("MeasureTable"); // MeasureTable From Database 
  
  ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  ui->tableView->setAlternatingRowColors(true);
  ui->tableView->setStyleSheet("alternate-background-color: lightgray;background-color: lightblue;");
  ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
  ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
  .......
  model->select();
  ui->tableView->setModel(model);
  
Ich möchte bei der Visualisieren der Tabelle mittel QTableview die Daten
erstmal filtern und entprechen Zelle färben, wenn eine bestimmte grenze
überschritten ist.
Z.B:
In dieses Tabelle "MeasureTable" gibt eine spalte, die heisst Spannung:
Ich will die Zelle, Wo es (das Value >5) färben

Wie mache ich das?
Hat jemenden eine Idee
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von Christian81 »

Das Aussehen eines Views wird über das Model gesteuert. In deinem Fall also QSqlRelationalTableModel. Demnach gibt es zwei Varianten - entweder von QSqlRelationalTableModel ableiten und die entsprchenden Daten in ::data() überschreiben oder ein QSortFilterProxyModel dazwischen hängen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
galilio
Beiträge: 42
Registriert: 19. November 2013 08:16

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von galilio »

@christian danke für die Antwort.
Kannst du bitte mir noch genauer erklären (Sorry)
Du hast mir zwei Varianten vorgeschlagen: Was ist deine Meinung nach die empfohlene (Besser) Variante ?
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von MichaelS »

galilio hat geschrieben:@christian danke für die Antwort.
Kannst du bitte mir noch genauer erklären (Sorry)
Das Thema wurde hier im Forum schon behandelt:

http://www.qtforum.de/forum/viewtopic.php?f=1&t=16639
galilio
Beiträge: 42
Registriert: 19. November 2013 08:16

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von galilio »

@Christian und MichaelS Vielen dank
Ich habe als Variante (was Christian vorgeschlagen hat), die Nr: 1 genommen.
Ich habe folgende gemacht :

Code: Alles auswählen

// Header File:

class DataDelegate:public QSqlRelationalTableModel
{

public:
	DataDelegate(QObject *parent = 0);
	~DataDelegate(void);
	
	QVariant data(const QModelIndex &index, int role) const;
};
// cpp File


DataDelegate::DataDelegate(QObject *parent ):QSqlRelationalTableModel(parent)
{
}

DataDelegate::~DataDelegate(void)
{
}

QVariant DataDelegate::data(const QModelIndex &index, int role) const
{
    int row = index.row();
    int col = index.column();

    if(role == Qt::BackgroundRole)
    {
		QString inhalt = headerData( index.column(), Qt::Horizontal, Qt::DisplayRole ).toString(); 
       
         if ( inhalt == "Id" )  
        {
	   QBrush Background(Qt::blue);
            return Background;
        }
   }
	return QSqlRelationalTableModel::data(index, role);
}
Ist das Okay ?
galilio
Beiträge: 42
Registriert: 19. November 2013 08:16

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von galilio »

Was mir nicht ganz klar ist:
Wie rufe ich denn DataDelegate in mein Klasse TableView?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von Christian81 »

Anstatt QSqlRelationalTableModel musst Du jetzt DataDelegate erzeugen und benutzen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
galilio
Beiträge: 42
Registriert: 19. November 2013 08:16

Re: QT + Visual studio "Qtableview :cell color ändern

Beitrag von galilio »

1000000000000000000000000 Dank
Es hat geklappt
Antworten