Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ Немасштабируемые элементы в QGraphicsView

Автор: Sky 10.5.2008, 14:54

Есть QGraphicsScene, содержащая некоторое количество элементов и отображающаяся в QGraphicsView.
Необходимо, чтобы некоторые из элементов не меняли размер, при изменении масштаба в QGraphicsView.
Переопределение paintEvent не помогает - все, что отрисовывается в нем, не показывается, а в консоли "QPainter::begin: Widget painting can only begin as a result of a paintEvent".
Пока сделал таким образом, что при изменении масштаба в QGraphicsView меняется масштаб отдельных элементов в противоположную сторону. Но во-первых это криво, а во-вторых текст при этом отрисовывается некорректно.

Автор: Litkevich Yuriy 10.5.2008, 14:59

Цитата(Sky @ 10.5.2008, 18:54) *
"QPainter::begin: Widget painting can only begin as a result of a paintEvent".

ну выходит, что paintEvent не начинается, я так понимаю это из-за двойной буферизации.
Наверно надо ловить событие изменения масштаба.

Автор: Sky 10.5.2008, 15:08

Цитата(Litkevich Yuriy @ 10.5.2008, 15:59) *
ну выходит, что paintEvent не начинается, я так понимаю это из-за двойной буферизации.
Наверно надо ловить событие изменения масштаба.


В самом QGraphicsView такого события вроде нет.
Я меняю масштаб по событию wheelEvent, соответственно этот момент отлавливаю, только что дальше делать? :)

Автор: Litkevich Yuriy 10.5.2008, 15:09

я честно говоря, с рисованием и т.п. вещами в Qt еще не занимался.

Автор: Sky 10.5.2008, 15:54

Все оказалось проще некуда:
item->setFlag(QGraphicsItem::ItemIgnoresTransformations, true); :D :D :D

Автор: Litkevich Yuriy 10.5.2008, 15:59

ну вот сам нашел, а я буду знать :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)