Russian Qt Forum
Ноябрь 25, 2024, 05:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTablewidget + ctrl-z  (Прочитано 4527 раз)
CJ1
Гость
« : Июль 20, 2012, 17:23 »

Как сделать в QTableWidget чтоб работало назад все изменения
Записан
mutineer
Гость
« Ответ #1 : Июль 20, 2012, 17:26 »

Запоминать все изменения, а при нажатии ctrl+z откатывать по очереди
Записан
CJ1
Гость
« Ответ #2 : Июль 20, 2012, 17:28 »

Хм.... не представляю как можно записать все изменения.... удаления стобцов и строк, затем заного их создания, про том все  данные нужно отправить в сеть
Записан
mutineer
Гость
« Ответ #3 : Июль 20, 2012, 17:30 »

Ну да, это не очень тривиальная задача
Записан
V1KT0P
Гость
« Ответ #4 : Июль 20, 2012, 17:30 »

Хм.... не представляю как можно записать все изменения.... удаления стобцов и строк, затем заного их создания, про том все  данные нужно отправить в сеть
Храни diff-ы между прошлым и следующим состояниями.
Записан
CJ1
Гость
« Ответ #5 : Июль 20, 2012, 17:43 »

Жесть...... Ну придется мудрить ченить!
Записан
CJ1
Гость
« Ответ #6 : Июль 20, 2012, 18:16 »

Вроде уже в голове есть идеи..... но , а есть хоть малейшый пример подобного! Данные же все таки динамические?
Записан
V1KT0P
Гость
« Ответ #7 : Июль 20, 2012, 18:35 »

Вроде уже в голове есть идеи..... но , а есть хоть малейшый пример подобного! Данные же все таки динамические?
Дык я же сказал, что самый простой это хранить diff-ы. Например есть таблица на 3 столбца и 10 строк. Во 2-м столбце 5 строки было "Оплатить" а стало "Оплачено", значит создаем diff в котором сказано что для возвращения на предыдущее состояние необходимо изменить ячейку 2-го столбца 5-й строки на "Оплатить".

Более подробно, более совершенные способы можешь посмотреть в исходника Open Source объектов. Например Calc, Writer из OpenOffice. Если не осилишь, то глянь программы по проще.
Записан
Fat-Zer
Гость
« Ответ #8 : Июль 20, 2012, 18:36 »

Вроде уже в голове есть идеи..... но , а есть хоть малейшый пример подобного! Данные же все таки динамические?
если ищешь как это сделать, чтобы было Ъ, то читай про паттерн «команда»...
соответственно разделяешь таблицу и модель и делаешь так, чтобы любое взаимодействие таблицы и модели шло через специальный объект-команду с методами «Выполнить(модель)» и «Отменить(Модель)»...
если таблица небольшая, то можно запоминать каждый раз её всю, тогда можно использовать паттерн мементо (не помню как по нашему)

ЗЫ: в помощь книжечка «Приемы объектно-ориентированного программирования» Э. Гамма Р. Хелм
ЗЗЫ: задача очень распространённая, но совсем не тривиальная и не простая...
« Последнее редактирование: Июль 20, 2012, 18:43 от Fat-Zer » Записан
CJ1
Гость
« Ответ #9 : Июль 20, 2012, 18:41 »

таблица динамическая..... и очень огромная
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 20.