Russian Qt Forum
Май 02, 2024, 03:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsScene неподвижный текст  (Прочитано 4486 раз)
FakeMoNEy
Гость
« : Август 23, 2014, 21:05 »

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

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

. А масштабирование победить не получилось при вызове QGraphicsView::scale() текст масштабируется.
Попробуй флаг QGraphicsItem::ItemIgnoresTransformations

Спасибо! А не подскажете как сделать чтобы при прокрутке сцены итем оставался на экране в одном месте?
Записан
Nidxogg
Гость
« Ответ #3 : Август 24, 2014, 20:41 »

Цитировать
Спасибо! А не подскажете как сделать чтобы при прокрутке сцены итем оставался на экране в одном месте?
Попробуй посмотреть группу методов mapTo/mapFrom у QGraphicsView и перемещать item на сцене в точки, соответствующей одной и той же точке на view.
Другого способа не знаю, хотя чувствую что это костыль какой-то
Записан
_OLEGator_
Гость
« Ответ #4 : Август 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]
Записан
FakeMoNEy
Гость
« Ответ #5 : Август 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?
Записан
_OLEGator_
Гость
« Ответ #6 : Август 25, 2014, 11:25 »

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

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


Страница сгенерирована за 0.109 секунд. Запросов: 21.