Название: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 02, 2011, 13:21 Добрый день.
Проблема в следующем: когда я создаю свой класс, наследуемый от QGraphicsView и устанавливаю размеры сцены и окна одинаковыми, появляются полосы прокрутки. И хоть я полосы убираю, прокрутка все равно совершается(управление итэмами идет с помощью стрелок). Если же размеры окна больше размера сцены, то смещаются система координат сцены, объекты не перемещаются до самой границы окна и еще куча неудобств. Причем если я создаю объект непосредственно QGraphicsView, то всего этого нет. Как можно сделать так, чтобы размеры сцены и окна были одинаковыми, да к тому же не было прокрутки? Премного благодарен. Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 02, 2011, 23:15 См. QGraphicsView::fitInView().
Название: Re: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 03, 2011, 12:05 Хм. Опробовал - но проблема с масштабированием объектов QGraphicsItem. Муторно. Спасибо за идею. Может, я все-таки на ней и остановлюсь.
Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 03, 2011, 12:14 Цитировать Хм. Опробовал - но проблема с масштабированием объектов QGraphicsItem. Муторно. И что за муторные проблемы?Название: Re: Размеры окна и QGraphicsScene. Отправлено: meego_man от Май 03, 2011, 15:12 Попробуйте использовать
Код: ... resizeEvent (QResizeEvent* pEvent) Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 03, 2011, 15:17 2 meego_man:
И зачем так ??? Название: Re: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 03, 2011, 15:47 Цитировать Хм. Опробовал - но проблема с масштабированием объектов QGraphicsItem. Муторно. И что за муторные проблемы?по оси y если размеры сцены, окна и QGraphicsView::fitInView() совпадают, то все нормально. если же совпадают соответственно оси x, то уже идет прокрутка. Не пойму из-за чего. Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 03, 2011, 15:51 Что-то не так делаешь.
Цитировать К примеру изменяются размеры как объектов, так и системы координат. Значит при изменении размера окна меняешь размер сцены, что делать никак нельзя.Достаточно в QGraphicsView::resizeEvent() вызвать fitInView(). Название: Re: Размеры окна и QGraphicsScene. Отправлено: meego_man от Май 03, 2011, 16:00 2 meego_man: затем чтобы не было полос прокруткиИ зачем так ??? Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 03, 2011, 16:08 Цитата: meego_man затем чтобы не было полос прокрутки А чего же ты не указал, что в таком случае придётся пересчитать геометрию всех элементов сцены?Вот работающий пример для понимания: Код
Название: Re: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 04, 2011, 12:40 meego_man, GreatSnake, большое спасибо за помощь!
В resizeEvent() я сделал fitInView(размеры окна); Все работает на ура! Еще раз спасибо! И еще вопрос не по теме: чтоб определять столкновения, обязательно переопределять shape у итема? Название: Re: Размеры окна и QGraphicsScene. Отправлено: GreatSnake от Май 04, 2011, 12:47 Цитировать И еще вопрос не по теме: чтоб определять столкновения, обязательно переопределять shape у итема? Если элемент не прямоугольный, то да.Название: Re: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 04, 2011, 12:56 И вытекает вопрос: переопределив shape у итема, получение списка объектов должно производиться в системе координат сцены?
Если у меня к примеру прямоугольный объект размеров 0, 0, 20, 20 находится на позиции 20, 20, то и список объектов ниже к примеру от объекта надо так: scene()->items(QPolygonF() << mapToScene(20, 20) << mapToScene(40, 40))? Название: Re: Размеры окна и QGraphicsScene. Отправлено: Lunex.08 от Май 07, 2011, 18:01 Вопрос снят, спасибо за помощь.
|