Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (1)
  • Доп. параметр для Item'ов в QTableView?

    @silver47
    QTableView с чего данные получает. Если от QSqlQueryModel, то нужно наследоваться от QSqlQueryModel и менять уже там. Вырезки из моей модели, приблизительно показывает как это можно сделать.
    mymodel.h
    class MyModel : public QSqlQueryModel{
        Q_OBJECT
    public:
                                MyModel(QObject *parent = 0);
        QVariant           data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    };
    //==== Модель Таблицы ====


    mymodel.cpp
    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;
    }
    Ответ написан
    Комментировать