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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QUndoCommand, QUndoStack, ets.  (Прочитано 5455 раз)
XXCoder
Гость
« : Ноябрь 18, 2006, 00:47 »

Кто-нибудь пробовал использовать классы QUndoCommand, QUndoStack & ets. при работе с графическими объектами? Поделитесь исходниками пожалуста! 4.2.1))   :oops:
Записан
Tonal
Гость
« Ответ #1 : Ноябрь 18, 2006, 10:28 »

А в чём проблем-то?
Записан
XXCoder
Гость
« Ответ #2 : Ноябрь 18, 2006, 12:53 »

непонятно как добавлять объект... тот который рисуется в паинт ивенте... это все равно что писать заново получается...
Записан
Tonal
Гость
« Ответ #3 : Ноябрь 20, 2006, 10:51 »

Для реализации отката обычно используются 2 схемы запись комманд и запись состояний.
В первом случае мы запоминаем действие и его аргументы,
во втором - состояние системы до начала действия.

Первая схема обычно бывает менее требовательна к памяти,
просто реализуются сохранение/восстановление истории и распространение между экземплярами приложения и/или сеансами.
Минусы: Для действия может не существовать обратного, тормоза с групповой отменой.

Вторая схема всегда позволяет быстро откатиться к любой выбранной точке.
Минусы: Обычно требуется много памяти, не всегда очевидна связь с действиями, плохо поддаётся сохранению/распространению.

В текстовых процессорах обычно применяется первая.
В графических редакторах - вторая.
Записан
XXCoder
Гость
« Ответ #4 : Ноябрь 20, 2006, 11:08 »

ага, те данные классы не подойдут для работы с графикой...  там работа как раз с командами как я поняла...
Записан
Tonal
Гость
« Ответ #5 : Ноябрь 20, 2006, 11:40 »

Если все команды в графике обратимые - можно использовать запись комманд.

Можно, так же использовать гибридный вариант - в команде запоминается исходное состояние и действие с аргументами над ним. Можно запоминать не всё состояние, а только то подмножество, на которое воздействует комманда.
В этом случае Qt-шные классы довольно хороше подходят.
Записан
XXCoder
Гость
« Ответ #6 : Ноябрь 21, 2006, 12:33 »

но они же в паин ивенте!!! из него запоминать... Непонимающий ладно) попробую))) пасибо!!!
Записан
Tonal
Гость
« Ответ #7 : Ноябрь 21, 2006, 12:46 »

Кто в "паин ивенте"?
Ты их там создаёшь?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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