QVariant CustomQueryModel::data(const QModelIndex &index, int role) const{ QVariant value = QSqlQueryModel::data(index, role); QString sss; QVariant ret; if(status_mask) { if (role == Qt::DisplayRole && index.column() == 5) { if(value_mask.isValid()) { if(value_mask.type() == QVariant::Type::String) { QStringList sss; QRegExp reg("(.*)"+value_mask.toString()+"(.*);"); QString exp(value.toString()); if(reg.exactMatch(exp)>=0) sss.append(reg.cap(2)); if(!sss.isEmpty()) { // тут чтото типа index.setdata() } else { // тут чтото типа index.setdata() } } else if (role == Qt::TextColorRole ) { if(index.data(Qt::UserRole) == -1) qVariantFromValue(QColor(Qt::red)); else qVariantFromValue(QColor(Qt::green)); } } } } return value;}
QVariant CustomQueryModel::data(const QModelIndex &index, int role) const{ ... if (role == Qt::DisplayRole && index.column() == 5) // __role == Qt::DisplayRole__ { ... if(value_mask.type() == QVariant::Type::String) { ... } else if (role == Qt::TextColorRole ) //<=сюда никогда не зайдем, т.к. role = Qt::DisplayRole { ... } } } } return value;}
....query.seek(index.row());if(index.column()==1){ switch(role){ case Qt::UserRole+1: return query.value(3); default: return query.value(index.column()); }}else return query.value(index.column());.....