crossplatform.ru

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

> QGraphicsScene, передвижения элементов.
Phoenix_nsk
  опции профиля:
сообщение 5.5.2011, 19:31
Сообщение #1


Студент
*

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

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




Репутация:   0  


Есть сцена, на ней есть элементы, некоторые двигать можно, некоторые нет, которые можно двигать - нужно ограничить в области их передвижения.

Как это лучше реализовать?

Как вообще контролировать передвижение элементов на сцене?

Я переопределил метод из QGraphicsView, в тестовом варианте это выглядит так:
void SetModelView::mouseMoveEvent(QMouseEvent *event)
{
    QGraphicsItem *temp = this->itemAt(event->pos());
    if (temp)
        temp->setPos(this->mapToScene(event->pos()));
}


Подскажите, пожалуйста с какой стороны вообще подойти к передвижению элементов?
Суть такова: Есть модель маятника, можно установить его начальное положение перетащив грузик, при этом угол поворота этого грузика ограничен, а так же при перемещении его должно сохраняться расстояние между точкой подвеса и грузом, т.е. по окружности движение, для этого надо пересчитывать координаты.

Сообщение отредактировал Phoenix_nsk - 6.5.2011, 19:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 6.5.2011, 7:09
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
Я переопределил метод из QGraphicsScene
Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
void SetModelView::
пишешь что метод сцены переопределил, а название класса содержит "Представление"
Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
В итоге приложение вылетает Segmentation fault
логично, ведь ты не проверяешь есть ли вообще элемент в данных координатах itemAt(event->pos()). А сразу вызываешь метод.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Phoenix_nsk
  опции профиля:
сообщение 6.5.2011, 19:27
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 6.5.2011, 8:09) *
Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
Я переопределил метод из QGraphicsScene
Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
void SetModelView::
пишешь что метод сцены переопределил, а название класса содержит "Представление"
Цитата(Phoenix_nsk @ 5.5.2011, 22:31) *
В итоге приложение вылетает Segmentation fault
логично, ведь ты не проверяешь есть ли вообще элемент в данных координатах itemAt(event->pos()). А сразу вызываешь метод.

Поправил замечания.
Да меня уже конкретно клинит на этом. Из-за того что не могу сделать адекватные передвижения элементов - не могу двигаться дальше. :( :unsure: :help:

Как лучше подойти к вопросу передвижения элементов?
Там ещё преобразовывать систему координат надо, что-то она тоже не работает у меня как надо. Я в печали. =(((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Phoenix_nsk   QGraphicsScene, передвижения элементов.   5.5.2011, 19:31
- - Litkevich Yuriy   Цитата(Phoenix_nsk @ 5.5.2011, 22:31) Я п...   6.5.2011, 7:09
|- - Phoenix_nsk   Цитата(Litkevich Yuriy @ 6.5.2011, 8:09) ...   6.5.2011, 19:27
- - Phoenix_nsk   Размер сцены взят из размеров виджета, его размеры...   6.5.2011, 20:22
- - Phoenix_nsk   Да чё такое то, народ? Тема сложная или чё; просмо...   7.5.2011, 16:29
- - ufna   тема.. как бэ элементарная, уже на все ответили т...   7.5.2011, 18:12
- - Phoenix_nsk   На самое главное не ответили - координаты которые ...   7.5.2011, 18:28
- - ufna   а зачем по View то ловишь? Лови в самом айтеме или...   7.5.2011, 18:53
- - Phoenix_nsk   Можно примеры? Реально, уже второй раз с преобразо...   7.5.2011, 19:08
- - ufna   Выкладывайте, посмотрим.   7.5.2011, 19:13
- - Phoenix_nsk   Проект туД Сейчас читаю примеры из демок Qt, 4000 ...   7.5.2011, 19:49
- - Phoenix_nsk   М?   9.5.2011, 20:45
- - mks   Цитата(Phoenix_nsk @ 5.5.2011, 19:31) Ест...   11.5.2011, 9:59
- - ufna   да нет, все проще. Если ты делаешь: scene->ad...   11.5.2011, 10:13
- - Phoenix_nsk   Кстати, заметили что градиент то совсем не градиен...   11.5.2011, 17:20
- - ufna   А градиент я думаю считается от (0,0) позиции, а у...   12.5.2011, 17:42


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


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




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