Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: juvf от Октябрь 05, 2009, 10:10



Название: Выравнивание текста в QGraphicsTextItem
Отправлено: juvf от Октябрь 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 не так тэги поставил?  Как такое выравнивание можно сделать?


Название: Re: Выравнивание текста в QGraphicsTextItem
Отправлено: iroln от Ноябрь 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



Название: Re: Выравнивание текста в QGraphicsTextItem
Отправлено: GreatSnake от Ноябрь 16, 2011, 11:13
Имеется в виду центровка многострочного текста?


Название: Re: Выравнивание текста в QGraphicsTextItem
Отправлено: iroln от Ноябрь 16, 2011, 11:16
GreatSnake, как многострочного, так и одной строки. А это разве имеет значение? В общем, нужно поведение как у QLabel.


Название: Re: Выравнивание текста в QGraphicsTextItem
Отправлено: GreatSnake от Ноябрь 16, 2011, 11:24
А это разве имеет значение?
Имеет, т.к. boundingRect() элемента задаётся от содержимого, т.е. ширина элемента будет равна ширине текста и смысла в выравнивании не будет )
PS. И почему не используется QGraphicsSimpleTextItem? Ведь он намного легче  ???


Название: Re: Выравнивание текста в QGraphicsTextItem
Отправлено: iroln от Ноябрь 16, 2011, 12:56
Это понятно, поэтому я сейчас сделал подобно тому как предложили тут:
http://www.qtcentre.org/threads/24814-QGraphicsTextItem-Vertical-text-alignment

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

Я и использую QGraphicsSimpleTextItem у себя (от него наследую свой класс).