Russian Qt Forum

Qt => Model-View (MV) => Тема начата: johnpion от Май 06, 2012, 19:29



Название: setData для модели, основанной на QSqlTableModel
Отправлено: johnpion от Май 06, 2012, 19:29
Валюта в базе хранится в копейках, т.е. int
Сделал модель, для отображения нужной колонки в денежном формате:
Код:
class SqlTableModel : public QSqlTableModel
{
public:
    SqlTableModel(QObject *parent = 0){
    }

private:
    QVariant data(const QModelIndex &item, int role) const{
        QVariant value = QSqlTableModel::data(item, role);
        if (!value.isValid())
            return QVariant();       
        if (role == Qt::DisplayRole){
            //Кусок, который нужно заменить
            //-----------------------------
            if (item.column() == 4) //Вместо 4 - любой другой
                    return money(value.toInt());
            //-----------------------------
        }
        return value;
    }

    QString money(int sum = 0){
        int a = 0, b = 0;
        QString value, dec;
        a = sum / 100;
        b = sum % 100;
        if (b == 0){
            dec = ".00";
        } else if (b > 0 && b < 10){
            dec = ".0" + QVariant(b).toString();
        } else if (b >= 10 && b < 100) {
            dec = "." + QVariant(b).toString();
        }
   
        value = QVariant(a).toString() + dec;
   
        return value;
    }
};

#endif // SQLMODEL_H


Вопрос:
Как выбирать несколько столбцов и разные функции, кроме расширенного условия в
Код:
if (item.column() == 4)

Это нужно только для отображения. Думал про setData. Думал, но не смог реализовать


Название: Re: setData для модели, основанной на QSqlTableModel
Отправлено: Bepec от Май 07, 2012, 09:01
Делегат детектед! ©

Используйте делегат, для собственного отображения информации.