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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перемещение группы элементов на сцене без нажатия мыши  (Прочитано 2927 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Ноябрь 08, 2013, 18:10 »

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

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

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

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 08, 2013, 20:31 »

Может проще: есть команда duplicate в меню (Сmd+D). Она дублирует все выбранные в сцене объекты точно на те же места что и оригинаоы. После выполнения копии становятся выбранными и пользователь сам (обычными средствами) двигает их куда надо,
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Ноябрь 08, 2013, 23:29 »

можно сказать что так и делается - элементы сначала клонируются, но не отображаются и на сцену не добавляются. по команде Вставить создаю свою группу объектов, в нее добавлю дочерние, пересчитываю внутреннее пространство, и затем в событии движения мыши перемещаю эту группу. зачем так делается: пользователь водить мышью и смотрит как эти объекты будут вставлены. если он кликнул мышью то они ставятся на сцену, путем извлечения из группы и пересчет координат положений элементов относительно того места куда был сдела клик. если же юзер не хочет их вставлять, жемт эскейп и группа вместе с дублоикатами просто удаляется.
частичную причину выяснил, у меня есть объекты, которые состоят из полигонов. так вот позиция элемента может быть ниже boundingRect, хотя я думал иначе, изза этого они и ставятся не совсем туда как надо. Да еще и с вращением беда.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Ноябрь 09, 2013, 10:48 »

зачем так делается: пользователь водить мышью и смотрит как эти объекты будут вставлены. если он кликнул мышью то они ставятся на сцену,
Наверное в любой сцене юзер может удалять и двигать выбранные элементы. Ну и все, просто дублируете и сразу вставляете, (можно с небольшим сдвигом от оригинала). А движение с ненажатой мышей не выглядит естественно - на мой взгляд, ненужный сервис
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #4 : Ноябрь 11, 2013, 12:08 »

Как раз для моих юзеров это очень нужный сервис - экономит кучу времени при копировании/вставке и подгонке элементов друг к другу.
на счёт вставить/удалить - удаление работает только в режиме редактирования, в режиме исполнения элементы фиксируются.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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