Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Flake от Март 24, 2009, 13:54



Название: Вопрос про модель.
Отправлено: Flake от Март 24, 2009, 13:54
Задача такова. В модели есть ячейка в которой отображается некий текст и хранится значение. При редактировании этой ячейки появляется выпадающий список. После выбора в ячейке должен обновится текст и значение.

Код
C++ (Qt)
model->setData( model->index(r, 2, QModelIndex()), asd, Qt::DisplayRole );
model->setData( model->index(r, 2, QModelIndex()), zxc, Qt::EditRole );
 

Что отображать Qt::DisplayRole, что хранить Qt::EditRole. Но получается так, что выводится то что под Qt::EditRole.

Почему так происходит, получается DisplayRole и EditRole связаны между собой?


Название: Re: Вопрос про модель.
Отправлено: Rcus от Март 24, 2009, 14:04
если это QStandardItemModel, то связаны:
qt45/src/gui/itemviews/qstandarditemmodel.cpp:814:
Код
C++ (Qt)
void QStandardItem::setData(const QVariant &value, int role)
{
   Q_D(QStandardItem);
   role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
...
 


Название: Re: Вопрос про модель.
Отправлено: Flake от Март 25, 2009, 10:26
Понял.

Создал свою модель, унаследовавшись от QAbstractItemModel. Переопределил методы, но всё перестало работать нормально :). Если ли пример реализации своей модели? Нужно чтобы всё было максимально к стандартной, но роли не были связаны.