LINUX.ORG.RU

[Qt4] QTreeWidget - как запретить редактирование item'ов в определенных столбцах?


0

0

сабж.

Можно ли как попроще сделать (не изобретая лисапедов)? Для редактирования данных в нужных столбцах использую делегаты, установленные с помощью setItemDelegateForColumn(). Для столбцов, где делегаты не установлены, запускаются дефолтные редакторы. Можно это отключить как-нибудь? Обрабатывать сигналы itemClicked()/itemDoubleClicked() и потом editItem()?

1. в перечислении Qt::ItemFlag лежит Qt::ItemIsEditable
2. QModelIndex содержит в себе эти флаги
3. переопределяй выдачу индексов в модели: QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const [pure virtual], выдавая для нужных (row, column) либо редактируемые, либо нет

PayableOnDeath
()
Ответ на: комментарий от mr-badguy

да, это я не учёл, тогда вот:

> Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual]

> Returns the item flags for the given index.

> The base class implementation returns a combination of flags that enables the item (ItemIsEnabled) and allows it to be selected (ItemIsSelectable).


Переопредели просто эту функцию, чтобы возращала флаги индекса для редактируемых и флаги без ItemIsEditable для остальных

PayableOnDeath
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.