LINUX.ORG.RU

Qt и QAbstractListModel: как из кода сказать, что такой-то элемент списка сейчас редактруется?

 ,


0

1

Есть у меня модель, унаследованная от QAbstractListItem, представляющий собой список портов, которые есть у такого-то электронного компонента.

Есть у неё метод, который добавляет в список ещё один элемент (ещё один порт). По умолчанию ему присваивается имя вроде RENAME_ME_PLZ_ASAP. Предполагается, что пользователь его немедленно переименует.

Одна беда: чтобы переименовать этот порт, юзеру надо, как минимум, сделать следующее:

- отпустить клавиатуру,

- схватить мышку,

- прицелиться в нужный элемент списка,

- сделать туда двойной щелчок, чтобы началось редактирование

- отпустить мышку

- схватить клавиатуру

-- и только тогда можно будет переименовать этот ч0ртов порт.

Имею спросить: а как бы мне сразу же, добавив этот порт, задать ему режим редактирования принудительно, чтобы юзер смог переименовывать его уже сразу же, не отвлекаясь на то, чтобы делать это руками?



Последнее исправление: Yak (всего исправлений: 1)

по идее тебе надо запилить еще и свой delegate который будет уведомлять тебя, какой item редактируется.

ckotinko ☆☆☆
()
Ответ на: комментарий от XMs

То, что доктор прописал!

Это оно!

Yak
() автор топика
Ответ на: комментарий от XMs

О, а есть ли способ сделать так, чтобы когда я начинаю редактирование (например, щёлкаю двойным щелчком по нужной клеточке), то старое значение не сразу удалялось целиком, а его можно было именно редактировать?

UPD: А, всё, нашёл. Надо было в data(...) поддержать EditRole.

Yak
() автор топика
Последнее исправление: Yak (всего исправлений: 1)
Ответ на: комментарий от Yak

Ты ещё можешь на виджет навесить экземпляр QStyledItemDelegate, насколько я помню, это давало какие-то плюшки без возни с ролями

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