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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отобразить текст над QGraphicsRectItem  (Прочитано 7011 раз)
UVV
Гость
« : Апрель 28, 2015, 15:33 »

Привет.
Мне нужно отобразить квадрат на QGraphicsScene, с чем справляется QGraphicsRectItem, и подпись к нему. Вот тут я немного запутался, как лучше это сделать. Если использую QGraphicsTextItem, то непонятно как выставить размер текста. Логически текст с квадратом - это одна сущность, поэтому я объединил их в QGraphicsItemGroup.
Подскажите, в какую сторону лучше смотреть?
Спасибо.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Апрель 28, 2015, 15:52 »

Самое простое -- подобрать на глаз Улыбающийся

Или смотрите в сторону QFontMetrics::boundingRect, только идете от противного -- подбираете такой размер шрифта, чтобы подошло под размер квадрата
Записан

UVV
Гость
« Ответ #2 : Апрель 28, 2015, 16:17 »

Самое простое -- подобрать на глаз Улыбающийся

Или смотрите в сторону QFontMetrics::boundingRect, только идете от противного -- подбираете такой размер шрифта, чтобы подошло под размер квадрата

Проблема в том, что мой квадрат сильно маленький.
Код:
m_pRectItem->setRect(0, 0, 0.04, 0.04);
Записан
UVV
Гость
« Ответ #3 : Апрель 28, 2015, 16:27 »

Хм... сделал
Код:
m_pTextItem->scale(0.01, -0.01)
И выглядеть вроде стало нормально.. Т.е. только масштабированием решать, получается?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #4 : Апрель 29, 2015, 10:02 »

а не проще ли написать своего наследника, который бы рисовал текс в рамке? Работы на 5 минут
Записан
UVV
Гость
« Ответ #5 : Апрель 29, 2015, 14:53 »

Будут те же яйца только в профиль же )
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #6 : Апрель 30, 2015, 09:53 »

да, но у вас больше контроля над вашим элементом..
Записан
UVV
Гость
« Ответ #7 : Май 04, 2015, 18:43 »

да, но у вас больше контроля над вашим элементом..
А можно небольшой примерчик, как нарисовать такой маленький текст?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #8 : Май 05, 2015, 09:48 »

Вам нужно что бы размер текста измеялся в зависимости от размера кавадрата? что бы он вмещался в него? или размер статический?
Записан
UVV
Гость
« Ответ #9 : Май 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 плывут влево из-за больших значений ширины и высоты.
Записан
UVV
Гость
« Ответ #10 : Май 05, 2015, 11:10 »

Собсно теперь вопрос. Если я переопределю mapRectToScene() и буду игнорировать там scale() будет ли это работать, и если да, то будет ли это правильно? )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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