![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
wiz29 |
![]()
Сообщение
#1
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день всем.
Вопрос, можно ли каким либо образом сереализовать команды которые "кладуться" в QUndoStack? можно ли как то "положить" команду в QUndoStack чтобы при этом не произошло вызова redo? PS. Просто не хочется реализовывать паттерн Command целиком, кутешный именно по этим 2м причинам не подходит. Сообщение отредактировал wiz29 - 8.10.2010, 10:31 |
|
|
wiz29 |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
с redo вроде разобрался. он к месту в приципе, но вот что делать с сериализацией? (данных в объекте Command может быть много и хранить в памяти все дорогое удовольствие)
|
|
|
SABROG |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
но вот что делать с сериализацией? Судя по примеру из QUndoCommand:
В качестве хранилища можно выбрать любой удобный для тебя инструмент, хоть XML, хоть SQLITE, хоть SQL, хоть QDataStream. |
|
|
wiz29 |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за проявленый интрес, я сделал примерно следующее.
Создал некий объет MySerializer который может упаковывать некие типы данных имеющие интерфейс сериализации. MyCommandDataAbstract - это интерфейс данных для команды, которую можно сериализовать в неком QIODevice. + MyCommandBase c методом SetMyCommandData - устанавливает данные для выполнения команды. Ну и пришлось использовать d MyUndoStack в качестве закрытой реализации QUndoStack. Посути MySerializer, некий упрощенный манагер размещения данных команд. Просто сохранять/загружать постоянно данные команды не совсем эффективно, как мне кажется, вот для этого и сделал весь огород ![]() |
|
|
wiz29 |
![]()
Сообщение
#5
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Есть ли у кого нибудь еще варианты, помимо предложенных? (буду рад обсудить)
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 6.2.2025, 3:21 |