QGraphicsItem + QGraphicsView, Перемещение элемента |
Здравствуйте, гость ( Вход | Регистрация )
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 |
Там же есть 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 |
Спасибо! буду смотреть разбираться
|
|
|
Текстовая версия | Сейчас: 25.11.2024, 16:41 |