crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QGraphicsItem + QGraphicsView, Перемещение элемента
crashsp
  опции профиля:
сообщение 25.11.2010, 18:57
Сообщение #1


Студент
*

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

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




Репутация:   546  


Доброго времени суток
Не могу понять и разобраться, дело вот в чем :
есть элемент QGraphicsProxyWidget скажем p_wgt, делаю вот так p_wgt->moveBy(500,220) сразу смотрю позицию все окей 500,200
после делаю вот так p_wgt->setTransform(QTransform().translate(375,-15)) физически элемент оказывается в другой точки,но функция
p_wgt->pos() возвращает ту же позицию... вот и вопрос : какие координат перемещает translate или чьи ?? в доках как я понял написано что системные, из чего я не смог сделать для себя не какой вывод так как я вроде обращаюсь к элементу
Подскажите что я не так понял или сделал??
Благодарю....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 25.11.2010, 20:50
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


Ну тут дело в том, что есть Transform. Виджет сместился в своих собственных координатах, но в родительских - остался на прежнем месте.

Там же есть setPos(), зачем так сложно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
crashsp
  опции профиля:
сообщение 26.11.2010, 6:33
Сообщение #3


Студент
*

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

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




Репутация:   546  


Цитата(ufna @ 25.11.2010, 21:50) *
Там же есть setPos(), зачем так сложно?

Ну дело в том что я нашел в demo пример embeddeddialogs там используется QTimeLine и хотел реализовать что то подобное только перемещать виджеты по кругу ну вот там и используется setTransform
Идея была в том : я имею вспомогательный эллипс , для себя разделил его на шесть секторов, соответственно есть шесть виджетов каждый расположен в секторе, нажимаю вправо виджеты по кругу перемещаются на один сектор назад или вперед, соответственно чем виджет дальше или ближе их масштабировал функцией scale все в той же setTransform и виджеты плавно двигаются по кругу
Реализовать идею не получилось так как не смог выяснить на какой координате в данный момент находятся виджеты
По видимому вся идея не правильна, вот и отсюда все сложности

Цитата
Виджет сместился в своих собственных координатах, но в родительских - остался на прежнем месте

Вот это я как раз не могу понять
Как это все можно реализовать наиболее компактно и понятно )?
Благодарю..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 26.11.2010, 7:18
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


Бери у айтема также данные из transform(), учитывай scale - отсюда получишь координаты виджета в координатах родителя.

Дело в том, что трансформация - очень хитрая штука, работающая именно в координатах самого айтема, а не родителя. Просто проследи логику изменения именно в таком ключе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
crashsp
  опции профиля:
сообщение 26.11.2010, 7:36
Сообщение #5


Студент
*

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

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




Репутация:   546  


Спасибо! буду смотреть разбираться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.11.2017, 14:29