Russian Qt Forum

Qt => Вопросы новичков => Тема начата: FakeMoNEy от Август 23, 2014, 21:05



Название: QGraphicsScene неподвижный текст
Отправлено: FakeMoNEy от Август 23, 2014, 21:05
Здравствуйте. Есть QGraphicsView->QGraphicsScene на сцене хочу создать QGraphicsItem с текстом, но неподвижным, при прокрутке и масштабировании сцены. Пересчитываю координаты в итеме при отрисовке в 0,0 относительно QGraphicsView. При прокрутке сцены текст уезжает. Пробовал сделать boudingRect() во всю сцену, текст стоит но это не выход. А масштабирование победить не получилось при вызове QGraphicsView::scale() текст масштабируется. Подскажите как сделать правильно.


Название: Re: QGraphicsScene неподвижный текст
Отправлено: Nidxogg от Август 23, 2014, 21:58
. А масштабирование победить не получилось при вызове QGraphicsView::scale() текст масштабируется.
Попробуй флаг QGraphicsItem::ItemIgnoresTransformations


Название: Re: QGraphicsScene неподвижный текст
Отправлено: FakeMoNEy от Август 24, 2014, 01:45
. А масштабирование победить не получилось при вызове QGraphicsView::scale() текст масштабируется.
Попробуй флаг QGraphicsItem::ItemIgnoresTransformations

Спасибо! А не подскажете как сделать чтобы при прокрутке сцены итем оставался на экране в одном месте?


Название: Re: QGraphicsScene неподвижный текст
Отправлено: Nidxogg от Август 24, 2014, 20:41
Цитировать
Спасибо! А не подскажете как сделать чтобы при прокрутке сцены итем оставался на экране в одном месте?
Попробуй посмотреть группу методов mapTo/mapFrom у QGraphicsView и перемещать item на сцене в точки, соответствующей одной и той же точке на view.
Другого способа не знаю, хотя чувствую что это костыль какой-то


Название: Re: QGraphicsScene неподвижный текст
Отправлено: _OLEGator_ от Август 24, 2014, 22:06
Для таких целей лучше использовать
Код
C++ (Qt)
void QGraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected]
void QGraphicsView::drawForeground ( QPainter * painter, const QRectF & rect ) [virtual protected]


Название: Re: QGraphicsScene неподвижный текст
Отправлено: FakeMoNEy от Август 25, 2014, 02:18
Для таких целей лучше использовать
Код
C++ (Qt)
void QGraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected]
void QGraphicsView::drawForeground ( QPainter * painter, const QRectF & rect ) [virtual protected]
Спасибо. Про них я забыл, но если данные для QGraphicsView::drawForeground() извлекаются из итемов, View создан только для отображения. Это будет нормально связать View и Item?


Название: Re: QGraphicsScene неподвижный текст
Отправлено: _OLEGator_ от Август 25, 2014, 11:25
Что?
Если какой-то элемент сцены должен постоянно находиться в одном месте во вью и не меняться при изменении масштаба - надо просто рисовать ручками его в drawForeground, т.е. эту уже не item или по крайней мере он не должен находиться в сцене.

Либо рисуй все ручками, либо создай item не принадлежащий сцене и отрисовывай его с помощью
Код
C++ (Qt)
void QGraphicsItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 )