...........................connect( tableView->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( colorRows( QItemSelection, QItemSelection )));...........................class RealCurItemDelegate : public QItemDelegate {public: RealCurItemDelegate::RealCurItemDelegate(QObject * parent = 0) : QItemDelegate (parent) { } void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const { QStyleOptionViewItem opt = option; QBrush fill = opt.palette.brush(QPalette::Background); if (index.isValid() && index.column() == 6) { fill.setColor(Qt::red); } else if(index.isValid() && index.column() == 10){ fill.setColor(Qt::blue); }else { fill.setColor(Qt::yellow); } painter->fillRect(opt.rect, fill); QItemDelegate::paint(painter, opt, index); } };void MainWindow::colorRows( const QItemSelection &selected, const QItemSelection &deselected ){ QModelIndex index; QModelIndexList items = deselected.indexes(); int dataFields; foreach ( index, items ) { dataFields = model->data( index, Qt::DisplayRole ).toInt(); if (dataFields >= 35) { RealCurItemDelegate *delegat = new RealCurItemDelegate(); tableView->setItemDelegateForRow(index.row(), delegat); } }}
QVariant MSqlQueryModel::data(const QModelIndex &index, int role) const { if(role == Qt::TextColorRole) { double area = record(index.row()).value(3).toDouble(); if(area > 0.001) return QVariant(QColor(Qt::blue)); } return QSqlQueryModel::data(index, role);}
class MSqlQueryModel : public QSqlDataModel { QVariant data(const QModelIndex &index, int role) const;};
model = new MSqlQueryModel(this);
QDate tempdate = record(index.row()).value(3).toDate();
return QVariant(QColor(Qt::red));
if(record.selected() ) return QVariant(QColor(Qt::gree));
QVariant MyTableModel::data(const QModelIndex &index, int role) const{ switch (role) { case Qt::BackgroundColorRole: int i = record(index.row()).value(1).toInt(); //вот в этом моменте мы получаем значения явно не от этой записи //если выводить в лог от всех вызовов, то выясняется, что еще и везде одинаковые ....