Класс QStaticText
Класс QStaticText обеспечивает оптимизированный вывод текста, когда текст и его форматирование обновляются редко. Подробнее...
| Заголовок: | #include <QStaticText> |
| qmake: | QT += gui |
| С: | Qt 4.7 |
Этот класс был представлен в Qt 4.7.
Типы публичного доступа
| Перечисление | PerformanceHint { ModerateCaching, AggressiveCaching } |
Функции публичного доступа
| QStaticText(const QStaticText &other) | |
| QStaticText(const QString &text) | |
| QStaticText() | |
| QStaticText & | operator=(const QStaticText &other) |
| ~QStaticText() | |
| QStaticText::PerformanceHint | performanceHint() const |
| void | prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont()) |
| void | setPerformanceHint(QStaticText::PerformanceHint performanceHint) |
| void | setText(const QString &text) |
| void | setTextFormat(Qt::TextFormat textFormat) |
| void | setTextOption(const QTextOption &textOption) |
| void | setTextWidth(qreal textWidth) |
| QSizeF | size() const |
| void | swap(QStaticText &other) |
| QString | text() const |
| Qt::TextFormat | textFormat() const |
| QTextOption | textOption() const |
| qreal | textWidth() const |
| bool | operator!=(const QStaticText &other) const |
| bool | operator==(const QStaticText &other) const |
Подробное описание
QStaticText предоставляет способ кэширования данных форматирования блока текста, чтобы его можно было выводить более эффективно, чем с помощью QPainter::drawText(), где информация о форматировании пересчитывается при каждом вызове.
Класс в первую очередь предназначен для оптимизации в случаях, когда текст, шрифт и преобразования в рисовальщике остаются статичными на протяжении нескольких событий рисования. Если текст или его форматирование изменяется для каждой итерации, QPainter::drawText() является более эффективным вариантом, так как статическое форматирование текста пришлось бы пересчитывать, чтобы учесть новые условия.
Перевод рисовальщика не приведет к пересчету форматирования текста, но окажет небольшое влияние на производительность drawStaticText(). Изменение любых других частей преобразований рисовальщика или шрифта рисовальщика приведет к пересчету форматирования статического текста. Этого следует избегать, насколько это возможно, чтобы максимально использовать преимущества QStaticText.
Кроме того, drawStaticText() поддерживает только аффинные преобразования. Вызов drawStaticText() на проекционном рисовальщике будет работать немного хуже, чем использование обычного вызова drawText(), поэтому этого следует избегать.
class MyWidget: public QWidget
{
public:
MyWidget(QWidget *parent = 0) : QWidget(parent), m_staticText("This is static text")
protected:
void paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawStaticText(0, 0, m_staticText);
}
private:
QStaticText m_staticText;
}; Класс QStaticText может использоваться для имитации поведения QPainter::drawText() в определенной точке без ограничений, а также при вызове QPainter::drawText() с прямоугольником ограничителя.
Если прямоугольник ограничителя не требуется, создайте объект QStaticText без задания предпочтительной ширины текста. Тогда текст займет одну строку.
Если вы зададите ширину текста для объекта QStaticText, это ограничит текст. Текст будет отформатирован так, что ни одна строка не будет превышать заданную ширину. Ширина текста, заданная для QStaticText, не будет автоматически использоваться для обрезки. Для достижения обрезки помимо перевода на новые строки используйте QPainter::setClipRect(). Позиция текста определяется аргументом, переданным в QPainter::drawStaticText(), и может изменяться от вызова к вызову с минимальным влиянием на производительность.
Для дополнительного удобства можно применять форматирование к тексту, используя подмножество HTML, поддерживаемое QTextDocument. QStaticText попытается угадать формат входного текста, используя Qt::mightBeRichText(), и интерпретировать его как форматированный текст, если эта функция вернёт true. Чтобы принудительно заставить QStaticText отображать содержимое как обычный текст или форматированный текст, используйте функцию QStaticText::setTextFormat() и передайте соответственно Qt::PlainText и Qt::RichText.
QStaticText может представлять только текст, поэтому только те теги HTML, которые изменяют форматирование или внешний вид текста, будут приняты во внимание. Добавление изображения в входной HTML, например, приведет к включению изображения как части форматирования, повлияя на расположение символов текста, но оно не будет отображаться. Результатом будет пустая область размером с изображение в выходных данных. Аналогично, использование таблиц приведет к форматированию текста в формате таблицы, но границы не будут нарисованы.
Если статический текст рисуется впервые или статический текст или шрифт рисовальщика были изменены с момента последнего рисования, форматирование текста должно быть пересчитано. В некоторых движках рисования изменение матрицы рисовальщика также приведет к пересчету форматирования. В частности, это произойдёт для любого движка, кроме движка рисования OpenGL2. Пересчёт форматирования наложит нагрузку на вызов QPainter::drawStaticText(), где это происходит. Чтобы избежать этой нагрузки в событии рисования, вы можете вызвать prepare() заранее, чтобы убедиться, что форматирование вычислено.
См. также QPainter::drawText(), QPainter::drawStaticText(), QTextLayout и QTextDocument.
Документация по типам членов
Перечисление QStaticText::PerformanceHint
Это перечисление различных подсказок по производительности, которые можно задать для QStaticText. Эти подсказки могут использоваться для указания того, что QStaticText должен использовать дополнительные кэши, если это возможно, для повышения производительности за счёт памяти. В частности, установка подсказки по производительности AggressiveCaching для QStaticText повысит производительность при использовании графической системы OpenGL или при рисовании в QOpenGLWidget.
| Постоянная | Значение | Описание |
|---|---|---|
QStaticText::ModerateCaching |
0 |
Выполнить базовый кэширование для высокой производительности при низкой стоимости памяти. |
QStaticText::AggressiveCaching |
1 |
Использовать дополнительные кэши, если они доступны. Это может повысить производительность с большей стоимостью памяти. |
Документация по функциям членов
QStaticText::QStaticText(const QStaticText &other)
Создает объект QStaticText, который является копией other.
QStaticText::QStaticText(const QString &text)
Создает объект QStaticText с заданным текстом.
QStaticText::QStaticText()
Создаёт пустой QStaticText
QStaticText &QStaticText::operator=(const QStaticText &other)
Присваивает other этому QStaticText.
QStaticText::~QStaticText()
Уничтожает QStaticText.
QStaticText::PerformanceHint QStaticText::performanceHint() const
Возвращает установленный параметр производительности для QStaticText.
См. также setPerformanceHint().
void QStaticText::prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())
Подготавливает объект QStaticText к отрисовке с заданной matrix и font, чтобы избежать накладных расходов при вызове drawStaticText().
При вызове drawStaticText() макет QStaticText будет пересчитан, если какая-либо часть объекта QStaticText изменилась с момента последнего отрисовки. Он также будет пересчитан, если шрифт холдера рисования отличается от шрифта, используемого при последней отрисовке QStaticText, или же, в любой системе рендеринга, кроме OpenGL2, если матрица холдера рисования изменилась с момента последней отрисовки статического текста.
Чтобы избежать накладных расходов при создании макета при первой отрисовке QStaticText после внесения изменений, можно использовать функцию prepare() и передать ожидаемую matrix и font.
См. также QPainter::setFont() и QPainter::setMatrix().
void QStaticText::setPerformanceHint(QStaticText::PerformanceHint performanceHint)
Устанавливает параметр производительности QStaticText в соответствии с заданным performanceHint. performanceHint используется для настройки уровня кэширования для повышения производительности.
По умолчанию используется QStaticText::ModerateCaching.
Примечание: Эта функция заставит пересчитать макет текста.
См. также performanceHint().
void QStaticText::setText(const QString &text)
Устанавливает текст QStaticText в text.
Примечание: Эта функция заставит пересчитать макет текста.
См. также text().
void QStaticText::setTextFormat(Qt::TextFormat textFormat)
Устанавливает формат текста QStaticText в textFormat. Если textFormat установлен в Qt::AutoText (значение по умолчанию), формат текста будет определяться с помощью функции Qt::mightBeRichText(). Если формат текста Qt::PlainText, текст будет отображаться как есть, в то время как при формате Qt::RichText он будет интерпретироваться как HTML. QStaticText поддерживает HTML-теги, которые изменяют шрифт, цвет или макет текста.
Примечание: Эта функция заставит пересчитать макет текста.
См. также textFormat(), setText(), и text().
void QStaticText::setTextOption(const QTextOption &textOption)
Устанавливает структуру опций текста, управляющую процессом форматирования, в заданное значение textOption.
См. также textOption().
void QStaticText::setTextWidth(qreal textWidth)
Устанавливает предпочтительную ширину для QStaticText. Если текст шире заданной ширины, он будет разбиваться на несколько строк и увеличиваться по вертикали. Если текст нельзя разбить на несколько строк, он будет занимать больше места, чем заданная ширина textWidth.
Установка предпочтительной ширины текста в отрицательное значение сделает ширину текста неограниченной.
Используйте size(), чтобы получить фактический размер текста.
Примечание: Эта функция заставит пересчитать макет текста.
См. также textWidth() и size().
QSizeF QStaticText::size() const
Возвращает размер ограничивающего прямоугольника для QStaticText.
См. также textWidth().
void QStaticText::swap(QStaticText &other)
Меняет местами этот экземпляр статического текста с other. Эта функция очень быстрая и никогда не терпит неудачу.
Функция была добавлена в Qt 5.0.
QString QStaticText::text() const
Возвращает текст QStaticText.
См. также setText().
Qt::TextFormat QStaticText::textFormat() const
Возвращает формат текста QStaticText.
См. также setTextFormat(), setText(), и text().
QTextOption QStaticText::textOption() const
Возвращает текущие параметры текста, используемые для управления процессом форматирования.
См. также setTextOption().
qreal QStaticText::textWidth() const
Возвращает предпочтительную ширину для QStaticText.
См. также setTextWidth().
bool QStaticText::operator!=(const QStaticText &other) const
Сравнивает other с этим QStaticText. Возвращает true если тексты, шрифты или максимальные размеры отличаются.
bool QStaticText::operator==(const QStaticText &other) const
Сравнивает other с этим QStaticText. Возвращает true если тексты, шрифты и ширины текста совпадают.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qstatictext.html