QTableWidget, Редактирование ячеек |
Здравствуйте, гость ( Вход | Регистрация )
QTableWidget, Редактирование ячеек |
rcdimon |
21.11.2009, 14:02
Сообщение
#1
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
У меня в вопроса по таблицам.
Как запретить редактирование определенного столбца? Как отслеживать операцию окончания редактирования ячейки? |
|
|
Rocky |
21.11.2009, 15:55
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Как запретить редактирование определенного столбца?
Имхо только по ячейкам можно сделать. Т.е. при добавлении новой строки брать QTableWidgetItem* для нужного столбца, которуму хотим запретить редактирование и делаем например так:
Как отслеживать операцию окончания редактирования ячейки?
|
|
|
igor_bogomolov |
21.11.2009, 16:04
Сообщение
#3
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
1. Можно сделать через делегат
|
|
|
rcdimon |
21.11.2009, 16:11
Сообщение
#4
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
Цитата void itemChanged ( QTableWidgetItem * item ) Действительно работает. Но с ним есть проблемка- этот сигнал посылается не только после окончания редактирования ячейки, но и после ее создания методом setItem. Надо либо как-то различать эти 2 события, либо игнорировать setItem |
|
|
igor_bogomolov |
21.11.2009, 16:18
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Но с ним есть проблемка- этот сигнал посылается не только после окончания редактирования ячейки, но и после ее создания методом setItem. Для меня это тоже является огромной проблемой. Нормального решения я так и не нашёл. Сейчас использую костыль, опять же таки из делегата. Просто отправляю свой сигнал из QItemDelegate::setModelData(...). |
|
|
rcdimon |
21.11.2009, 16:21
Сообщение
#6
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
я просто еще не знаю что такое делегат... Но идея есть такая- отключать сигнал до наполнения таблицы ячейками и после делать connect заново )
|
|
|
Litkevich Yuriy |
21.11.2009, 16:35
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Rocky |
21.11.2009, 16:54
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Я через флаг делал. По типу перед началом заполнения m_bFlag = false; после - true. А в самом слоте if (!m_bFlag) return;
Хотя наверное щас буду все переделывать на blockSignals )) |
|
|
Текстовая версия | Сейчас: 3.1.2025, 11:44 |