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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выравнивание текста в QGraphicsTextItem  (Прочитано 7713 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Октябрь 05, 2009, 10:10 »

Как выравнивать текст html в QGraphicsTextItem? например текст
Код:
<p align = "center">Line 1:<br><b>Point of line 1</b></p>
запихиваю такой текст методом setHtml(). Но при отображении теста на сцене текст выравнивается по левому краю
Код:
Line 1:
Point of line 1

А нужно чтоб было
Код:
    Line 1:
Point of line 1

Т.е. нужно чтоб строчки относительно друг друга выравнивались по центру. Может я в html-e не так тэги поставил?  Как такое выравнивание можно сделать?
Записан
iroln
Гость
« Ответ #1 : Ноябрь 16, 2011, 11:00 »

Всем привет!

Проблема актуальна. Как установить выравнивание текста в QGraphicsTextItem?
Например, нужно, чтобы Plain Text был выровнен по центру относительно своей позиции.

Поискал в интернете. Нашёл вот это:
http://www.cesarbs.org/blog/2011/05/30/aligning-text-in-qgraphicstextitem/

Делаю, как написано в статье, чего-то не работает. Может чего-то сделал не так, буду ещё разбираться. Но простите, это же просто изврат какой-то. Попроще способов нет?

UPD:
Есть ещё вот такой баг, но это для html
https://bugreports.qt.nokia.com/browse/QTBUG-312

« Последнее редактирование: Ноябрь 16, 2011, 11:02 от iroln » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Ноябрь 16, 2011, 11:13 »

Имеется в виду центровка многострочного текста?
Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #3 : Ноябрь 16, 2011, 11:16 »

GreatSnake, как многострочного, так и одной строки. А это разве имеет значение? В общем, нужно поведение как у QLabel.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Ноябрь 16, 2011, 11:24 »

А это разве имеет значение?
Имеет, т.к. boundingRect() элемента задаётся от содержимого, т.е. ширина элемента будет равна ширине текста и смысла в выравнивании не будет )
PS. И почему не используется QGraphicsSimpleTextItem? Ведь он намного легче  Непонимающий
« Последнее редактирование: Ноябрь 16, 2011, 12:56 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #5 : Ноябрь 16, 2011, 12:56 »

Это понятно, поэтому я сейчас сделал подобно тому как предложили тут:
http://www.qtcentre.org/threads/24814-QGraphicsTextItem-Vertical-text-alignment

Переопределил метод paint и рисую текст с заданными параметрами в заданном мною же boundingRect. В принципе для моей задачи достаточно. Если развить идею, можно автоматически задавать boundingRect от заданных параметров выравнивания, но мне пока и так сойдёт.

Я и использую QGraphicsSimpleTextItem у себя (от него наследую свой класс).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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