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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] в QStandardItemModel EditRole==DisplayRole ?  (Прочитано 5002 раз)
unkeep
Гость
« : Август 22, 2015, 16:29 »

Можно ли в QStandardItemModel под Edit и Display ролями положить разные данные?
у меня не получается... Обеспокоенный

пока выкручиваюсь так

Код
C++ (Qt)
class MyModel : public QStandardItemModel
{
public:
   MyModel(QObject* parent) : QStandardItemModel(parent){}
 
   QVariant data(const QModelIndex &index, int role) const
   {
       if (role == Qt::DisplayRole)
       {
           return QStandardItemModel::data(index).toString() + "item";
       }
 
       return QStandardItemModel::data(index, role);
   }
};
« Последнее редактирование: Август 25, 2015, 14:18 от unkeep » Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Август 22, 2015, 19:01 »

Проблем возникать не должно. Может я просто не понял, что значит разные данные.

Код:
switch(role){
    case Qt::EditRole: {
        return value;
        break;
    }
    case Qt::DisplayRole: {
        if (value.type() == QVariant::Double)
            return QString("%L1").arg(value.toDouble(), 0, 'f', 2);
        else if (value.type() == QVariant::Date)
            return value.toDate().toString("dd.MM.yyyy");
        else
            return value;

        break;
    }
}
Записан
unkeep
Гость
« Ответ #2 : Август 25, 2015, 14:17 »

Проблема в том что QStandardItemModel хранит данные для этих двух ролей в одной и той же памяти.

Код
C++ (Qt)
model->setData(1, Qt::EditRole);
model->setData("one", Qt::DisplayRole);
qDebug() <<  model->data(Qt::EditRole); // "one"
 
model->setData("one", Qt::DisplayRole);
model->setData(1, Qt::EditRole);
qDebug() <<  model->data(Qt::DisplayRole); // 1

остаётся только хранить данные под Qt::EditRole, и переопределять data для Qt::DisplayRole.
И меня уже в принципе это устраивает)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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