Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: .alex от Февраль 07, 2009, 22:34



Название: Формат кусочка текста (QTextEdit, QTextDocument)
Отправлено: .alex от Февраль 07, 2009, 22:34
Существует ли способ изменить формат кусочка текста в QTextEdit?

Или нужно в QTextDocument искать QTextBlock (а ещё их может быть несколько!)
В каждом QTextBlock получать QTextLayout и вызывать setAdditionalFormats ?

Может можно как то по-проще?


Название: Re: Формат кусочка текста (QTextEdit, QTextDocument)
Отправлено: Пантер от Февраль 08, 2009, 11:16
Можно загружать отформатированный html.


Название: Re: Формат кусочка текста (QTextEdit, QTextDocument)
Отправлено: .alex от Февраль 08, 2009, 12:26
Попробую.

А этот способ не работает:
Код:
Или нужно в QTextDocument искать QTextBlock (а ещё их может быть несколько!)
В каждом QTextBlock получать QTextLayout и вызывать setAdditionalFormats ?

setAdditionalFormats затирают формат.
А если получить у QTextLayout список FormatRanges, то там в некоторых случаях содержатся диапазоны форматов предыдущих данных (которые были до редактирования), а иногда вообще мусор.


Название: Re: Формат кусочка текста (QTextEdit, QTextDocument)
Отправлено: .alex от Февраль 08, 2009, 17:20
Так пока работает:
Код
C++ (Qt)
void reformatSpan( QTextDocument& doc, int pos, int length, const QTextCharFormat& format )
{
QTextCursor cursor(&doc);
cursor.setPosition(pos, QTextCursor::MoveAnchor);
cursor.setPosition(pos + length, QTextCursor::KeepAnchor);
cursor.mergeCharFormat(format);
}


Название: Re: Формат кусочка текста (QTextEdit, QTextDocument)
Отправлено: .alex от Февраль 10, 2009, 03:03
Возникла проблема. Подход, представленный в предпоследнем сообщении работает неудовлетворительно. А точнее, ужасно тормозит.