Russian Qt Forum
Ноябрь 23, 2024, 13:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: setData для модели, основанной на QSqlTableModel  (Прочитано 2356 раз)
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. Думал, но не смог реализовать
Записан
Bepec
Гость
« Ответ #1 : Май 07, 2012, 09:01 »

Делегат детектед! ©

Используйте делегат, для собственного отображения информации.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 20.