Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: UVV от Апрель 28, 2015, 15:33



Название: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Апрель 28, 2015, 15:33
Привет.
Мне нужно отобразить квадрат на QGraphicsScene, с чем справляется QGraphicsRectItem, и подпись к нему. Вот тут я немного запутался, как лучше это сделать. Если использую QGraphicsTextItem, то непонятно как выставить размер текста. Логически текст с квадратом - это одна сущность, поэтому я объединил их в QGraphicsItemGroup.
Подскажите, в какую сторону лучше смотреть?
Спасибо.


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: gil9red от Апрель 28, 2015, 15:52
Самое простое -- подобрать на глаз :)

Или смотрите в сторону QFontMetrics::boundingRect (http://doc.qt.io/qt-4.8/qfontmetrics.html#boundingRect-2), только идете от противного -- подбираете такой размер шрифта, чтобы подошло под размер квадрата


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Апрель 28, 2015, 16:17
Самое простое -- подобрать на глаз :)

Или смотрите в сторону QFontMetrics::boundingRect (http://doc.qt.io/qt-4.8/qfontmetrics.html#boundingRect-2), только идете от противного -- подбираете такой размер шрифта, чтобы подошло под размер квадрата

Проблема в том, что мой квадрат сильно маленький.
Код:
m_pRectItem->setRect(0, 0, 0.04, 0.04);


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Апрель 28, 2015, 16:27
Хм... сделал
Код:
m_pTextItem->scale(0.01, -0.01)
И выглядеть вроде стало нормально.. Т.е. только масштабированием решать, получается?


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: Fregloin от Апрель 29, 2015, 10:02
а не проще ли написать своего наследника, который бы рисовал текс в рамке? Работы на 5 минут


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Апрель 29, 2015, 14:53
Будут те же яйца только в профиль же )


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: Fregloin от Апрель 30, 2015, 09:53
да, но у вас больше контроля над вашим элементом..


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Май 04, 2015, 18:43
да, но у вас больше контроля над вашим элементом..
А можно небольшой примерчик, как нарисовать такой маленький текст?


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: Fregloin от Май 05, 2015, 09:48
Вам нужно что бы размер текста измеялся в зависимости от размера кавадрата? что бы он вмещался в него? или размер статический?


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Май 05, 2015, 11:00
Вам нужно что бы размер текста измеялся в зависимости от размера кавадрата? что бы он вмещался в него? или размер статический?
Размер квадрата и текста статичный.
Сейчас я столкнулся со следующей проблемой из-за setScale():
Цитировать
pItem->itemsBoundingRect, width = 1.96 height = 1.08 x = 0 y = -0.4
pItem->boundingRect() mapped to scene, width = 39.2 height = 21.6 x = 7.53944 y = 43.1939
Как видно по ширине и высоте в scale() установено значение 20. Откуда берутся x и y, я пока не понял.
Проблема в том, что на pItem установлен флаг ItemIgnoresTransformations, и функции ZoomIn и FitInView плывут влево из-за больших значений ширины и высоты.


Название: Re: Отобразить текст над QGraphicsRectItem
Отправлено: UVV от Май 05, 2015, 11:10
Собсно теперь вопрос. Если я переопределю mapRectToScene() и буду игнорировать там scale() будет ли это работать, и если да, то будет ли это правильно? )