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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Управление редактированием отдельных колонок в qtableview.  (Прочитано 3163 раз)
lexaaleynik
Гость
« : Февраль 03, 2016, 11:46 »

Имеется собственная модель, построенная на базе QAbstractItemModel.
Эта модель отображается в таблице построенной на базе QTableView.
Запретить/разрешить редактирование всех ячеек таблицы можно установкой соответствующего флага в методе

Код:
QTableView::setedittriggers(QAbstractItemView::NoEditTriggers)

А вот как управлять возможностью редактирования ячеек колонки?
Можно конечно через делегат явно возвращать старое значение в Item после закрытия эдитора ячейки. Но хотелось бы чтобы createEditor вообще не вызывался.
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Февраль 03, 2016, 12:34 »

Переопределить у модели Qt::ItemFlags flags(const QModelIndex &index = QModelIndex()) const;
Записан
lexaaleynik
Гость
« Ответ #2 : Февраль 03, 2016, 13:27 »

Переопределить у модели Qt::ItemFlags flags(const QModelIndex &index = QModelIndex()) const;

Спасибо, это то что надо. Переопределил так:
Код:
Qt::ItemFlags flags(const QModelIndex &index) const
{
   if(index.column() > 4) // условие определяющие список столбцов для назначения соответствующих флагов
      return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
   else
      return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}

Всё работает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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