Seite 1 von 1

QT + Visual studio "Qtableview :cell color ändern

Verfasst: 12. Dezember 2014 07:29
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

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

Verfasst: 12. Dezember 2014 08:32
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.

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

Verfasst: 12. Dezember 2014 10:16
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 ?

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

Verfasst: 12. Dezember 2014 10:47
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

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

Verfasst: 12. Dezember 2014 13:36
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 ?

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

Verfasst: 12. Dezember 2014 13:42
von galilio
Was mir nicht ganz klar ist:
Wie rufe ich denn DataDelegate in mein Klasse TableView?

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

Verfasst: 12. Dezember 2014 13:49
von Christian81
Anstatt QSqlRelationalTableModel musst Du jetzt DataDelegate erzeugen und benutzen.

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

Verfasst: 12. Dezember 2014 14:54
von galilio
1000000000000000000000000 Dank
Es hat geklappt