Russian Qt Forum

Qt => Общие вопросы => Тема начата: alex12 от Февраль 15, 2007, 16:10



Название: QTableWidget и редактирование ячейки
Отправлено: alex12 от Февраль 15, 2007, 16:10
Всем привет!

Совсем замучился с такой проблемой. Есть таблица QTableWidget. В ней постоянно (1 раз в секунду) изменяются данные. Нужно чтобы пользователь мог вводить свои значения двойным нажатием на ячейке.

Проблема в том, что постоянно изменяющиеся данные забивают его ввод. Я ни как не могу найти, где можно узнать редактируется ли сейчас ячейка или нет. Может я не вижу какого-то очевидного пути?


Название: QTableWidget и редактирование ячейки
Отправлено: nova от Февраль 15, 2007, 21:10
Попробуй проверять имеет ли QTableWidget фокус ввода в данный момент.
Когда пользователь начинает ввод фокус передается делегату.


Название: QTableWidget и редактирование ячейки
Отправлено: mcgeenerman от Февраль 17, 2007, 03:40
я вижу проблему что когда пытаешся изменить каждую секунду QTableWidgetItem то он переходит в состояние не редактировать, вообще двойной щелчк по умолчаниб срабатывает на редактирование ячейки, но при изменении ячейки QTableWidgetItem фокус редактирование естественно сбрасывается, решение такое: перегружаеш слот двойного щелчка - в нём QTableWidgetItem::setData(1,"editing") далее, где алгоритм изменения данных ячейки в каждую секунду проверяем if(QTableWidgetItem::data(1)=="editing") то не изменяем ячейку так как она в процессе редактирования. При завершении редактирования сбрасываем дату QTableWidgetItem::setData(1,"")
завершение редактирования можно словить сигналом  itemChanged.