Класс QStaticText
Класс QStaticText обеспечивает оптимизированный вывод текста, когда текст и его расположение редко обновляются. Подробнее...
| Заголовок: | #include <QStaticText> |
| qmake: | QT += gui |
| С момента: | Qt 4.7 |
Типы public
| Перечисление | PerformanceHint { ModerateCaching, AggressiveCaching } |
Функции public
| 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.
Документация по типам членов
enum 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/qt-5.12/qstatictext.html