Russian Qt Forum

Qt => Вопросы новичков => Тема начата: 4sgen от Июнь 19, 2020, 14:22



Название: Назначение пользовательской роли QTableView
Отправлено: 4sgen от Июнь 19, 2020, 14:22
Отображение модели происходит в

Код:
QVariant MyModel::data(const QModelIndex &index, int role) const

Роль
Код:
Qt::DisplayRole
отвечает за отображение.

Возможно ли переназначить роль для отображения и как между ними переключаться?
Например

Код:
 enum Roles {
      ValueRole = Qt::UserRole + 1,     
      ByteRole
    };

и использовать эти роли вместо
Код:
Qt::DisplayRole


Название: Re: Назначение пользовательской роли QTableView
Отправлено: Пантер от Июнь 19, 2020, 14:41
Вьюхи работают через Qt::DisplayRole, так что, просто так не переназначить. Скажи, зачем тебе это понадобилось?


Название: Re: Назначение пользовательской роли QTableView
Отправлено: 4sgen от Июнь 19, 2020, 15:23
Вьюхи работают через Qt::DisplayRole, так что, просто так не переназначить. Скажи, зачем тебе это понадобилось?
Хочу отображать во view байты в hex и dec виде. По кнопке переключать. Самое глупое, что приходит в голову глобальную переменную в класс модели затолкать. Или ещё одну модель использовать.


Название: Re: Назначение пользовательской роли QTableView
Отправлено: Пантер от Июнь 19, 2020, 15:31
Так добавь в модельку переключатель, по которому в DisplayRole будешь возвращать либо hex, либо dec. А можешь делегата сделать и его настраивать.


Название: Re: Назначение пользовательской роли QTableView
Отправлено: 4sgen от Июнь 19, 2020, 16:28
Так добавь в модельку переключатель, по которому в DisplayRole будешь возвращать либо hex, либо dec. А можешь делегата сделать и его настраивать.
При установке данных удобно использовать роли.
Передал роль вместе с индексом и готово. Думал также с отображением можно что-то сделать.


Название: Re: Назначение пользовательской роли QTableView
Отправлено: Пантер от Июнь 19, 2020, 20:12
Для редактирования модели есть Qt::EditRole