Spec-Zone.ru › Qt 5.6

Класс QStaticText

Класс QStaticText обеспечивает оптимизированное отображение текста, когда текст и его расположение обновляются редко. Подробнее...

Заголовок: #include <QStaticText>
qmake: QT += gui
С тех пор: Qt 4.7
  • Список всех членов, включая унаследованные

Общедоступные типы

перечисление PerformanceHint { ModerateCaching, AggressiveCaching }

Общедоступные функции

QStaticText()
QStaticText(const QString &text)
QStaticText(const QStaticText &other)
~QStaticText()
PerformanceHint performanceHint() const
void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())
void setPerformanceHint(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.

PerformanceHint QStaticText::performanceHint() const

Возвращает установленный параметр производительности для QStaticText.

См. также setPerformanceHint().

void QStaticText::prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())

Подготавливает объект QStaticText к отрисовке с заданной matrix и font, чтобы избежать накладных расходов при вызове drawStaticText().

При вызове drawStaticText() макет QStaticText будет пересчитан, если какая-либо часть объекта QStaticText изменилась с момента последнего вывода. Он также будет пересчитан, если шрифт отрисовщика отличается от шрифта, использовавшегося при последнем выводе, или, при использовании любой другой движка отрисовки, кроме OpenGL2, если матрица отрисовщика была изменена с момента последнего вывода статического текста.

Чтобы избежать накладных расходов при создании макета при первом выводе QStaticText после внесения изменений, можно использовать функцию prepare() и передать ожидаемую matrix и font.

См. также QPainter::setFont() и QPainter::setMatrix().

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

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

Spec-Zone.ru

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