Spec-Zone.ru › Qt 5.14

Класс 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 с заданным текстом 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::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 если тексты, шрифты или максимальные размеры отличаются.

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.14/qstatictext.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API