Russian Qt Forum
Ноябрь 24, 2024, 00:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Кладовая готовых решений
(Модератор:
Пантер
) >
Реализация Undo/Redo действий пользователя в случае mdi интерфейса
Страниц:
1
2
3
[
4
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Реализация Undo/Redo действий пользователя в случае mdi интерфейса (Прочитано 25728 раз)
nata267
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #45 :
Июнь 20, 2012, 13:22 »
Цитата: alexis031182 от Июнь 20, 2012, 13:19
Цитата: nata267 от Июнь 20, 2012, 13:17
подождите, но ведь тогда посдеднем в стеке undo будет не удаление, а перетаскивание rectangle и только вернув его обратно, мы можем вернуть обратно объект.
Конечно, но это к частному вопросу о позиционировании. А мы упёрлись в проблему воссоздания объекта.
ну а как ещё решить проблему без конкретики? если вы ставите задачу абстрактно, я её могу понимать неправильно, подругому чем вы и мы говорим на разных языках
Записан
nata267
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #46 :
Июнь 20, 2012, 13:26 »
возможно, способ удаления (удалять или прятать) как раз таки и зависит от конокретных случаев. сколько у удаляемых объектов связей и как их восстанавливать. может если связей много и для восстановления потребуется объект по величине такой же как удаляемый, то уместно действительно прятать а не удалять и просто решить проблему связей
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #47 :
Июнь 20, 2012, 13:31 »
Цитата: nata267 от Июнь 20, 2012, 13:20
а если нужно другое поведение, если нужно чтобы он в удаленном состоянии передвинулся. допустим у нас есть контейнер, который содержит набор виджетов. один мы удалили, контейнер передвинули в другое место, виджет восстановили. он должен быть в контейнере, а не за его пределами
Операция undo, если глобальна, не даст восстановить объект, пока не отменятся предыдущие в стеке операции (например, смена положения). Если же undo для контейнера, то смена положения контейнера никак не повлияет на восстанавливаемый объект.
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #48 :
Июнь 20, 2012, 13:33 »
Цитата: nata267 от Июнь 20, 2012, 13:22
ну а как ещё решить проблему без конкретики? если вы ставите задачу абстрактно, я её могу понимать неправильно, подругому чем вы и мы говорим на разных языках
Вот мы с Вами по ходу дела, по Вашим вопросам и уточняем, отчего могут быть проблемы в той или иной ситуации на практике. Норм
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #49 :
Июнь 20, 2012, 13:36 »
Цитата: nata267 от Июнь 20, 2012, 13:26
возможно, способ удаления (удалять или прятать) как раз таки и зависит от конокретных случаев. сколько у удаляемых объектов связей и как их восстанавливать. может если связей много и для восстановления потребуется объект по величине такой же как удаляемый, то уместно действительно прятать а не удалять и просто решить проблему связей
Уместным в этой ситуации будет на мой взгляд вообще запретить undo/redo для таких объектов.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #50 :
Июнь 20, 2012, 13:45 »
Цитата: nata267 от Июнь 20, 2012, 13:17
подождите, но ведь тогда посдеднем в стеке undo будет не удаление, а перетаскивание rectangle и только вернув его обратно, мы можем вернуть обратно объект.
Вернуть-то вернем, но его позиция не будет равна на момент "удаления"
Цитата: nata267 от Июнь 20, 2012, 13:20
а если нужно другое поведение, если нужно чтобы он в удаленном состоянии передвинулся. допустим у нас есть контейнер, который содержит набор виджетов. один мы удалили, контейнер передвинули в другое место, виджет восстановили. он должен быть в контейнере, а не за его пределами
Это может иметь смысл, но это уже не undo,
Цитата: alexis031182 от Июнь 20, 2012, 13:06
Какую-то глобальную карту надо иметь обо всех конектах.
А как она должна выглядеть? Что должно быть ключом? И не взять ли ширше - обо всех (подлежаших undo) объектах? А не замахнуться ли нам на Вильяма Шекспира - и формализовать весь механизм связей?
Но давайте не частить - слишком бурное обсуждение утомляет
Пусть мысли созреют, достаточно на сегодня
Записан
nata267
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #51 :
Июнь 20, 2012, 13:45 »
другой пример. если у нас иерархическая структура и мы удаляем узел, как быть с потомками? куда их переносить для восстановления?
Записан
nata267
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #52 :
Июнь 20, 2012, 13:49 »
Цитата: Igors от Июнь 20, 2012, 13:45
Цитата: nata267 от Июнь 20, 2012, 13:17
подождите, но ведь тогда посдеднем в стеке undo будет не удаление, а перетаскивание rectangle и только вернув его обратно, мы можем вернуть обратно объект.
Вернуть-то вернем, но его позиция не будет равна на момент "удаления"
а позиция должна быть равна на момент удаления, причем позиция должна вернуться не только у него, но и не удаленных тоже, мы же их всех вместе перетаскивали и их перетавкивание относилось к перетаскиванию rectangle если я не ошибаюсь
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #53 :
Июнь 20, 2012, 13:52 »
Цитата: Igors от Июнь 20, 2012, 13:45
Цитата: alexis031182 от Июнь 20, 2012, 13:06
Какую-то глобальную карту надо иметь обо всех конектах.
А как она должна выглядеть? Что должно быть ключом? И не взять ли ширше - обо всех (подлежаших undo) объектах? А не замахнуться ли нам на Вильяма Шекспира - и формализовать весь механизм связей?
Я к тому, что эта информация не помешала бы. А уж как и чего - второй вопрос. Точнее первый, всё тот же
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #54 :
Июнь 20, 2012, 13:58 »
Цитата: nata267 от Июнь 20, 2012, 13:45
другой пример. если у нас иерархическая структура и мы удаляем узел, как быть с потомками? куда их переносить для восстановления?
Потомков придётся грохать тоже. И восстанавливать при восстановлении родителя. В этой уже ситуации мы как никогда близко находимся к тому, чтобы запрещение undo/redo было вполне себе рациональным решением. Естественно, что решение о подобном должно приниматься в каждом конкретном случае отдельно.
Записан
nata267
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #55 :
Июнь 20, 2012, 14:15 »
Цитата: alexis031182 от Июнь 20, 2012, 13:58
Цитата: nata267 от Июнь 20, 2012, 13:45
другой пример. если у нас иерархическая структура и мы удаляем узел, как быть с потомками? куда их переносить для восстановления?
Потомков придётся грохать тоже. И восстанавливать при восстановлении родителя. В этой уже ситуации мы как никогда близко находимся к тому, чтобы запрещение undo/redo было вполне себе рациональным решением. Естественно, что решение о подобном должно приниматься в каждом конкретном случае отдельно.
а может в этой ситуации прятать?
Записан
alexis031182
Гость
Re: Реализация Undo/Redo действий пользователя в случае mdi интерфейса
«
Ответ #56 :
Июнь 20, 2012, 14:39 »
Цитата: nata267 от Июнь 20, 2012, 14:15
а может в этой ситуации прятать?
Нет, ну конечно прятать или нет - решать разработчику. Просто он должен иметь ввиду возможные проблемы, о которых мы говорим.
Записан
Страниц:
1
2
3
[
4
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...