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 для обработки прокси-моделью

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

Qt

Получить значения полей выделенной строки QTableView

Для получения значения полей выделенной строки QTableView можно использовать несколько вариантов. Продолжить чтение «Получить значения полей выделенной строки QTableView»

Qt

Значения ячеек выделенных строк QTableView

Необходимо узнать значения ячеек выделенных строк в таблице класса QTableView, которая отображает некоторые данные.

Следующий пример покажет, как записать значения 0-ой ячейки каждой выделенной строки в список, а затем сформировать строку из этих значений, элементы которой разделены «,»: Продолжить чтение «Значения ячеек выделенных строк QTableView»

C++, Qt, Базы данных

Отображение данных выборки в виджете QTableView

Предположим, что на форме расположен объект класса QStackedWidget, на страницах которого расположены объекты QTableView, отображающие различные данные. В один момент времени данные будут отображаться только в одном из виджетов QTableView (по одному на страницу stacked widget). Объявим модель для данных типа QSqlQueryModel: Продолжить чтение «Отображение данных выборки в виджете QTableView»