LINUX.ORG.RU

Qt QTableWidget изменение ячейки как различить

 ,


0

1

Здравствуйте! С-но есть небольшая проблема. У меня имеются объекты на сцене и TableWidget, в котором записаны свойства выделенного объекта - координаты и имя. Каждый раз, когда я перемещаю выделенный объект, я посылаю сигнал главному окну, чтобы в таблице изменились значения. Это работает прекрасно. Теперь мне нужно обратное - при изменении в таблице значения координаты, нужно передвинуть выделенный объект в заданную точку. И вот тут начинаются проблемы - Слот cellChanged срабатывает каждый раз при перемещении объекта и возвращает его в ту же точку.

Пробовал вывести в отладку при перемещении значение координат выделенного объекта(1 столбец) и значение таблицы(2 столбец). Например, для координаты х:

283 283

284 283

284 284

284 284

285 284

Получается, что сперва изменяется координата объекта, но какого-то рожна в таблице остается старое значение. Поэтому координата x становится равной своему предыдущему значение, т.е. фактически не двигается

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

Заранее огромное спасибо!



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

При изменении из таблицы выставляй флаг, и потом по флагу при перемещении объекта не посылай сообщения главному окну

anonymous
()
Ответ на: комментарий от gwyllum

Прости, я тебя несколько запутал. QTableWidget — потомок QTableView. Я просто хотел подтолкнуть тебя к использованию MVC через qt-шный interview framework. Т.е. у тебя будет отдельный класс для хранения параметров (модель) и два класса для представления этих параметров (представления): сцена и таблица. Правда я не уверен, что с сцена будет поддерживать MVC. В принципе ты можешь продолжать использовать QTableWidget, даже можешь не использовать свою модель, так как QTableWidget уже работает с моделью, доступ к которой предоставляет метод model.

anonymous
()

Рекомендую разобраться с QTableModel/QTableView.

После продолжительной практики у меня сложилось впечатление, что QTableWidget создан для неосиляторов Model/View Programming @ Qt

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

Как вариант, можно использовать QObject::blockSignals

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