Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Fregloin от Ноябрь 08, 2013, 18:10



Название: Перемещение группы элементов на сцене без нажатия мыши
Отправлено: Fregloin от Ноябрь 08, 2013, 18:10
Привет. Нужно отобразить группу элементов, которая будет вставлена из буффера.
При движении мыши (БЕЗ КНОПКИ) пользователь может подвести эту группу в нужное место, после нажатия на кнопку объекты закрепляются на новых позициях.
Курсор мыши указывает на центр группы. Вобщем пока пишу кустарщину, но выходит все очень криво.

Вкратце суть такая.
Например есть небольшая группка объектов где то на сцене. После их копирования создаются клоны, и эти клоны нужно уже водить за мышью.

Вот моя реализация, но она хреново работает с непрямоугольными объектами (особенно у которых boundgingRect() отрицательный или непрямоугольный shape).
Подскажите, как лучше сделать?



Название: Re: Перемещение группы элементов на сцене без нажатия мыши
Отправлено: Igors от Ноябрь 08, 2013, 20:31
Может проще: есть команда duplicate в меню (Сmd+D). Она дублирует все выбранные в сцене объекты точно на те же места что и оригинаоы. После выполнения копии становятся выбранными и пользователь сам (обычными средствами) двигает их куда надо,


Название: Re: Перемещение группы элементов на сцене без нажатия мыши
Отправлено: Fregloin от Ноябрь 08, 2013, 23:29
можно сказать что так и делается - элементы сначала клонируются, но не отображаются и на сцену не добавляются. по команде Вставить создаю свою группу объектов, в нее добавлю дочерние, пересчитываю внутреннее пространство, и затем в событии движения мыши перемещаю эту группу. зачем так делается: пользователь водить мышью и смотрит как эти объекты будут вставлены. если он кликнул мышью то они ставятся на сцену, путем извлечения из группы и пересчет координат положений элементов относительно того места куда был сдела клик. если же юзер не хочет их вставлять, жемт эскейп и группа вместе с дублоикатами просто удаляется.
частичную причину выяснил, у меня есть объекты, которые состоят из полигонов. так вот позиция элемента может быть ниже boundingRect, хотя я думал иначе, изза этого они и ставятся не совсем туда как надо. Да еще и с вращением беда.


Название: Re: Перемещение группы элементов на сцене без нажатия мыши
Отправлено: Igors от Ноябрь 09, 2013, 10:48
зачем так делается: пользователь водить мышью и смотрит как эти объекты будут вставлены. если он кликнул мышью то они ставятся на сцену,
Наверное в любой сцене юзер может удалять и двигать выбранные элементы. Ну и все, просто дублируете и сразу вставляете, (можно с небольшим сдвигом от оригинала). А движение с ненажатой мышей не выглядит естественно - на мой взгляд, ненужный сервис


Название: Re: Перемещение группы элементов на сцене без нажатия мыши
Отправлено: Fregloin от Ноябрь 11, 2013, 12:08
Как раз для моих юзеров это очень нужный сервис - экономит кучу времени при копировании/вставке и подгонке элементов друг к другу.
на счёт вставить/удалить - удаление работает только в режиме редактирования, в режиме исполнения элементы фиксируются.