Класс QStaticText
Класс QStaticText обеспечивает оптимизированный вывод текста, когда текст и его расположение обновляются редко. Подробнее...
| Заголовок: | #include <QStaticText> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Открытые типы
| Перечисление | 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 = nullptr) : 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 объекта с заданным текстом text.
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::setWorldTransform().
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 если тексты, шрифты или максимальные размеры отличаются.
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-6.0/qstatictext.html