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