crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как правильно задать координаты?
toni.lobster
  опции профиля:
сообщение 23.11.2014, 14:16
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 23.9.2014
Пользователь №: 4231

Спасибо сказали: 0 раз(а)




Репутация:   0  


Задача - нарисовать нотный лист.

есть QGraphicsScene,
есть QGraphicsRectItem - это страница(str)
Есть QGraphicsRectItem - это нотоносец(staff), установлено staff.setParentItem(str), т.е при изменениях страницы нотоносцы меняются с ней. Нотоносец можно двигать по сцене.
и есть QGraphicsEllipseItem- нота(note), должна добавляться на нотоносец по щелчку правой кнопки мыши. Координаты вычисляются note.setPos(event.scenePos()). и для нее ParentItem - это staff.

НО есть проблема - если я двигаю staff по листу, то при вызове note.setParentItem координаты пересчитываются относительно staff, т.е если позиция курсора была в точке 10,10 на сцене, то при пересчете она станет 10,10 на нотоносце, что будет уже не под курсором.

Мне надо сохранить 2 пункта - нота добавляется в позицию курсора и при этом она связана с нотоносцем, с которым движется и масштабируется.

Есть конечно вариант все время учитывать координаты нотоносца относительно листа и вносить поправки при добавлении ноты, но может быть есть что-то проще?

Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.11.2014, 17:35
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Смотрите семейство функций mapTo/From, они пересчитывают координаты с учетом всех трансформаций.
http://qt-project.org/doc/qt-4.8/qgraphics...l#mapFromParent
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 8:06