Qt

Изменить цвет фона и текста ячейки или строки QTableView

Для решения поставленной задачи отнаследуемся от класса QIdentityProxyModel:

#include <QDialog>
#include <QSqlQueryModel>
#include <QIdentityProxyModel>

class ColorCell : public QIdentityProxyModel
{
public:
    ColorCell() {}
protected:
    virtual QVariant data(const QModelIndex &index, int role) const;
};


class myClass: public QDialog {
....
private slots:
	void updateModel();
private:
	QSqlQueryModel *model;
	ColorCell *colorCellModel;
}

Переопределим функцию data:

QVariant ColorCell::data(const QModelIndex &index, int role) const
{
    //изменение цвета текста на красный в 0-ой колонке
	if (role == Qt::ForegroundRole) {
        if (index.column() == 0)
            return QBrush(Qt::red);
    }
	//изменение цвета фона всей строки по значению в ячейке 4-ой колонки
	if (role == Qt::BackgroundRole) {
        if(!index.model()->data(
                    index.model()->index(index.row(), 4),
                    Qt::DisplayRole).toBool())
            return QBrush(Qt::green);
        else
            return QBrush(Qt::blue);
    }
    return QIdentityProxyModel::data(index, role);
}

Теперь определим для нашей прокси-модели ее модель-источник:

myClass::myClass(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Buffer)
{
	ui->setupUi(this);
    colorCellModel = nullptr;
	model = nullptr;
	updateModel();
}

void myClass::updateModel() {
	if (!model) {
		model = new QSqlQueryModel;
    	colorCellModel = new ColorCell;
    	ui->tableView->setModel(colorCellModel);
	}
	model->setQuery(<query text>);
	colorCellModel->setSourceModel(model);
}
Установка модели в качестве sourceModel для обработки прокси-моделью

Теперь таблица будет раскрашена в соответствии с заданными условиями.