Answer the question
In order to leave comments, you need to log in
Answer the question
In order to leave comments, you need to log in
QTableView from which it receives data. If from QSqlQueryModel, then you need to inherit from QSqlQueryModel and change it already there. Clippings from my model show roughly how this can be done.
mymodel.h
class MyModel : public QSqlQueryModel{
Q_OBJECT
public:
MyModel(QObject *parent = 0);
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
};
//==== Модель Таблицы ====
QVariant DownloadTabModel::data(const QModelIndex &index, int role) const {
QVariant value = QSqlQueryModel::data(index, role); // получили значение определенное
// в базовом классе
switch (role) { // в зависимости от параметра роль:
// Qt::DisplayRole - данные для отображения ячейки таблицы
// Qt::EditRole - данные для режима редактирования
// Qt::TextColorRole - цвет текста
// Qt::TextAlignmentRole - выравнивание
// Qt::FontRole - параметры шрифта
// Qt::BackgroundColorRole - цвет фона ячейки
// Qt::CheckStateRole - отображение QCheckBox
// Qt::SizeHintRole - предпочитаемый размер ячейки
case Qt::TextColorRole: // Цвет текста
// if(index.column() == 1)
// return qVariantFromValue(QColor(Qt::blue));
// else
return value;
case Qt::BackgroundColorRole: { // Цвет фона
if(index.sibling(index.row(), 0).data(Qt::DisplayRole).toString() != QObject::trUtf8("Ок")){
return qVariantFromValue(QColor(240, 180, 180));
}else{
if(QDateTime::fromString(index.sibling(index.row(), 1).data(Qt::DisplayRole).toString(), "dd.MM.yyyy hh:mm").secsTo(QDateTime::currentDateTime()) < 24 * 3600){
return qVariantFromValue(QColor(180, 240, 180));
}else if(QDateTime::fromString(index.sibling(index.row(), 1).data(Qt::DisplayRole).toString(), "dd.MM.yyyy hh:mm").secsTo(QDateTime::currentDateTime()) > 24 * 3600 * 30){
return qVariantFromValue(QColor(240, 240, 180));
}
}
}
return value;
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question