Класс QStaticText
Класс QStaticText обеспечивает оптимизированное отображение текста, когда текст и его форматирование обновляются редко. Подробнее...
| Заголовок: | #include <QStaticText> |
| qmake: | QT += gui |
| С момента: | Qt 4.7 |
Типы публичного доступа
| Перечисление | PerformanceHint { ModerateCaching, AggressiveCaching } |
Функции публичного доступа
| QStaticText() | |
| QStaticText(const QString &text) | |
| QStaticText(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 |
| QStaticText & | operator=(QStaticText &&other) |
| QStaticText & | operator=(const QStaticText &other) |
| bool | operator==(const QStaticText &other) const |
Подробное описание
Класс QStaticText обеспечивает оптимизированное отображение текста, когда текст и его форматирование обновляются редко.
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()
Конструирует пустой объект QStaticText.
QStaticText::QStaticText(const QString &text)
Конструирует объект QStaticText с заданным текстом text.
QStaticText::QStaticText(const QStaticText &other)
Создаёт объект QStaticText, являющийся копией other.
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. HTML-теги, изменяющие шрифт, цвет или расположение текста, поддерживаются QStaticText.
Примечание: Эта функция заставит пересчитать макет текста.
См. также 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 если тексты, шрифты или максимальные размеры отличаются.
QStaticText &QStaticText::operator=(QStaticText &&other)
Оператор перемещающей присваивания.
QStaticText &QStaticText::operator=(const QStaticText &other)
Присваивает other этому QStaticText.
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/archives/qt-5.11/qstatictext.html