Класс QLabel
Виджет QLabel предоставляет отображение текста или изображения. Подробнее...
| Заголовок: | #include <QLabel> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QFrame |
Свойства
|
|
Открытые функции
| QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| virtual | ~QLabel() |
| Qt::Alignment | alignment() const |
| QWidget * | buddy() const |
| bool | hasScaledContents() const |
| bool | hasSelectedText() const |
| int | indent() const |
| int | margin() const |
| QMovie * | movie() const |
| bool | openExternalLinks() const |
| QPicture | picture() const |
| QPixmap | pixmap() const |
| QTextDocument::ResourceProvider | resourceProvider() const |
| QString | selectedText() const |
| int | selectionStart() const |
| void | setAlignment(Qt::Alignment) |
| void | setBuddy(QWidget *buddy) |
| void | setIndent(int) |
| void | setMargin(int) |
| void | setOpenExternalLinks(bool open) |
| void | setResourceProvider(const QTextDocument::ResourceProvider &provider) |
| void | setScaledContents(bool) |
| void | setSelection(int start, int length) |
| void | setTextFormat(Qt::TextFormat) |
| void | setTextInteractionFlags(Qt::TextInteractionFlags flags) |
| void | setWordWrap(bool on) |
| QString | text() const |
| Qt::TextFormat | textFormat() const |
| Qt::TextInteractionFlags | textInteractionFlags() const |
| bool | wordWrap() const |
Переопределенные открытые функции
| virtual int | heightForWidth(int w) const override |
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Открытые слоты
| void | clear() |
| void | setMovie(QMovie *movie) |
| void | setNum(double num) |
| void | setNum(int num) |
| void | setPicture(const QPicture &picture) |
| void | setPixmap(const QPixmap &) |
| void | setText(const QString &) |
Сигналы
| void | linkActivated(const QString &link) |
| void | linkHovered(const QString &link) |
Переопределенные защищенные функции
| виртуальный void | changeEvent(QEvent *ev) override |
| виртуальный void | contextMenuEvent(QContextMenuEvent *ev) override |
| виртуальный bool | event(QEvent *e) override |
| виртуальный void | focusInEvent(QFocusEvent *ev) override |
| виртуальный bool | focusNextPrevChild(bool next) override |
| виртуальный void | focusOutEvent(QFocusEvent *ev) override |
| виртуальный void | keyPressEvent(QKeyEvent *ev) override |
| виртуальный void | mouseMoveEvent(QMouseEvent *ev) override |
| виртуальный void | mousePressEvent(QMouseEvent *ev) override |
| виртуальный void | mouseReleaseEvent(QMouseEvent *ev) override |
| виртуальный void | paintEvent(QPaintEvent *) override |
Подробное описание
QLabel используется для отображения текста или изображения. Функциональность пользовательского взаимодействия не предоставляется. Визуальный вид метки можно настроить различными способами, и её можно использовать для указания фокусного мнемоника для другого виджета.
QLabel может содержать любой из следующих типов контента:
| Контент | Настройка |
|---|---|
| Простой текст | Передайте QString в setText(). |
| Форматированный текст | Передайте QString, содержащий форматированный текст, в setText(). |
| Растровый образ | Передайте QPixmap в setPixmap(). |
| Анимация | Передайте QMovie в setMovie(). |
| Число | Передайте int или double в setNum(), которое преобразует число в простой текст. |
| Ничего | То же, что и пустой простой текст. Это значение по умолчанию. Устанавливается функцией clear(). |
Предупреждение: При передаче QString в конструктор или вызове setText(), убедитесь в очистке входных данных, так как QLabel пытается угадать, отображает ли он текст как простой текст или как форматированный текст, являющийся подмножеством разметки HTML 4. Вы можете явно вызвать setTextFormat(), например, в случае, если вы ожидаете, что текст будет в простом формате, но не можете контролировать источник текста (например, при отображении данных, загруженных из Интернета).
При изменении контента с помощью любой из этих функций предыдущий контент очищается.
По умолчанию метки отображают текст и изображения, выровненные по левому краю, по вертикали по центру, где все табуляции в отображаемом тексте автоматически расширяются. Однако внешний вид QLabel можно настроить и усовершенствовать различными способами.
Позиционирование содержимого в области виджета QLabel можно настроить с помощью setAlignment() и setIndent(). Текстовое содержимое также может изменять строки по границам слов с помощью setWordWrap(). Например, этот код создаёт углублённую панель с текстом в двух строках в правом нижнем углу (обе строки выровнены по правому краю метки):
QLabel *label = new QLabel(this);
label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
label->setText("first line\nsecond line");
label->setAlignment(Qt::AlignBottom | Qt::AlignRight); Свойства и функции, которые QLabel наследует от QFrame, также могут быть использованы для задания рамки виджета, используемой для любой данной метки.
QLabel часто используется в качестве метки для интерактивного виджета. Для этого QLabel предоставляет полезный механизм для добавления мнемоники (см. QKeySequence), которая установит фокус клавиатуры на другой виджет (так называемый "партнёр" QLabel). Например:
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit); В этом примере фокус клавиатуры передаётся партнёру метки (поле QLineEdit) при нажатии пользователя на Alt+P. Если партнёр был кнопкой (наследующей от QAbstractButton), активация мнемоники симулировала бы нажатие кнопки.
См. также QLineEdit, QTextEdit, QPixmap, QMovie, и GUI Design Handbook: Label.
Документация по свойствам
alignment : Qt::Alignment
Данное свойство содержит выравнивание содержимого метки.
По умолчанию содержимое метки выравнивается по левому краю и по вертикали посередине.
Функции доступа:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment) |
См. также text.
[read-only] hasSelectedText : const bool
Данное свойство указывает, есть ли выделенный текст.
hasSelectedText() возвращает true , если часть или весь текст был выделен пользователем; в противном случае возвращает false.
По умолчанию это свойство false.
Примечание: Флаги textInteractionFlags, установленные для метки, должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Функции доступа:
| bool | hasSelectedText() const |
См. также selectedText().
indent : int
Данное свойство содержит отступ текста метки в пикселях.
Если метка отображает текст, отступ применяется к левому краю, если alignment() равно Qt::AlignLeft, к правому краю, если alignment() равно Qt::AlignRight, к верхнему краю, если alignment() равно Qt::AlignTop, и к нижнему краю, если alignment() равно Qt::AlignBottom.
Если отступ отрицательный или не задан, метка вычисляет эффективный отступ следующим образом: Если frameWidth() равно 0, эффективный отступ становится 0. Если frameWidth() больше 0, эффективный отступ становится половиной ширины символа "x" текущего шрифта виджета font().
По умолчанию отступ равен -1, что означает, что эффективный отступ вычисляется описанным выше способом.
Функции доступа:
| int | indent() const |
| void | setIndent(int) |
См. также alignment, margin, frameWidth() и font().
margin : int
Данное свойство содержит ширину отступа.
Отступ — это расстояние между самым внутренним пикселем рамки и самым внешним пикселем содержимого.
По умолчанию отступ равен 0.
Функции доступа:
| int | margin() const |
| void | setMargin(int) |
См. также indent.
openExternalLinks : bool
Указывает, должна ли метка QLabel автоматически открывать ссылки с помощью QDesktopServices::openUrl() вместо излучения сигнала linkActivated().
Примечание: Флаги textInteractionFlags, установленные для метки, должны включать либо LinksAccessibleByMouse, либо LinksAccessibleByKeyboard.
Значение по умолчанию — false.
Функции доступа:
| bool | openExternalLinks() const |
| void | setOpenExternalLinks(bool open) |
См. также textInteractionFlags().
pixmap : QPixmap
Данное свойство содержит растровое изображение метки.
Установка растрового изображения очищает любое предыдущее содержимое. Короткая ссылка, если таковая есть, отключается.
Функции доступа:
| QPixmap | pixmap() const |
| void | setPixmap(const QPixmap &) |
scaledContents : bool
Данное свойство указывает, будет ли метка масштабировать содержимое, чтобы заполнить все доступное пространство.
При включенном свойстве и отображении меткой растрового изображения, оно будет масштабировано, чтобы заполнить всё доступное пространство.
По умолчанию это свойство равно false.
Функции доступа:
| bool | hasScaledContents() const |
| void | setScaledContents(bool) |
[read-only] selectedText : const QString
Данное свойство содержит выделенный текст.
Если выделенный текст отсутствует, значение этого свойства — пустая строка.
По умолчанию это свойство содержит пустую строку.
Примечание: Флаги textInteractionFlags, установленные для метки, должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Функции доступа:
| QString | selectedText() const |
См. также hasSelectedText().
text : QString
Данное свойство содержит текст метки.
Если текст не задан, возвращается пустая строка. Установка текста очищает любое предыдущее содержимое.
Текст будет интерпретироваться либо как обычный текст, либо как форматированный текст в зависимости от настроек формата текста; см. setTextFormat(). Значение по умолчанию — Qt::AutoText; т.е. QLabel попытается автоматически определить формат установленного текста. См. Поддерживаемый подмножество HTML для определения форматированного текста.
Если установлен «подручный» элемент, мнемонический ключ «подручного» элемента обновляется из нового текста.
Обратите внимание, что QLabel хорошо подходит для отображения небольших документов с форматированным текстом, таких как небольшие документы, которые получают свои параметры документа (шрифт, цвет текста, цвет ссылок) из палитры и свойств шрифта метки. Для больших документов используйте QTextEdit в режиме только для чтения вместо этого. QTextEdit также может обеспечить полосу прокрутки при необходимости.
Примечание: Эта функция включает отслеживание мыши, если text содержит форматированный текст.
Функции доступа:
| QString | text() const |
| void | setText(const QString &) |
См. также setTextFormat(), setBuddy() и alignment.
textFormat : Qt::TextFormat
Данное свойство содержит формат текста метки.
См. перечисление Qt::TextFormat для объяснения возможных вариантов.
Формат по умолчанию — Qt::AutoText.
Функции доступа:
| Qt::TextFormat | textFormat() const |
| void | setTextFormat(Qt::TextFormat) |
См. также text().
textInteractionFlags : Qt::TextInteractionFlags
Указывает, как метка должна взаимодействовать с пользовательским вводом, если она отображает текст.
Если флаги содержат Qt::LinksAccessibleByKeyboard, политика фокуса также автоматически устанавливается в Qt::StrongFocus. Если установлен Qt::TextSelectableByKeyboard, политика фокуса устанавливается в Qt::ClickFocus.
Значение по умолчанию — Qt::LinksAccessibleByMouse.
Функции доступа:
| Qt::TextInteractionFlags | textInteractionFlags() const |
| void | setTextInteractionFlags(Qt::TextInteractionFlags flags) |
wordWrap : bool
Данное свойство содержит политику перевода слов метки.
Если данное свойство true , то текст метки переносится по необходимости на разрывы слов; в противном случае он вообще не переносится.
По умолчанию перенос слов отключен.
Функции доступа:
| bool | wordWrap() const |
| void | setWordWrap(bool on) |
См. также text.
Документация по функциям-членам
QLabel::QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт метку, которая отображает текст text.
Аргументы parent и флаги виджета f передаются конструктору QFrame.
См. также setText(), setAlignment(), setFrameStyle() и setIndent().
QLabel::QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт пустую метку.
Аргументы parent и флаги виджета f передаются конструктору QFrame.
См. также setAlignment(), setFrameStyle() и setIndent().
[slot] void QLabel::clear()
Очищает содержимое метки.
[signal] void QLabel::linkActivated(const QString &link)
Этот сигнал излучается, когда пользователь нажимает на ссылку. URL, на который указывает якорь, передаётся в link.
См. также linkHovered().
[signal] void QLabel::linkHovered(const QString &link)
Этот сигнал излучается, когда пользователь наводит указатель мыши на ссылку. URL, на который указывает якорь, передаётся в link.
См. также linkActivated().
[slot] void QLabel::setMovie(QMovie *movie)
Устанавливает содержимое метки в movie. Любое предыдущее содержимое очищается. Метка НЕ принимает владения над фильмом.
Сокращение-партнёр, если таковое имеется, отключается.
См. также movie() и setBuddy().
[slot] void QLabel::setNum(double num)
Это перегруженная функция.
Устанавливает содержимое метки в обычный текст, содержащий текстовое представление double num. Любое предыдущее содержимое очищается. Ничего не делает, если строковое представление double совпадает с текущим содержимым метки.
Сокращение-партнёр, если таковое имеется, отключается.
См. также setText(), QString::setNum() и setBuddy().
[slot] void QLabel::setNum(int num)
Устанавливает содержимое метки в обычный текст, содержащий текстовое представление целого числа num. Любое предыдущее содержимое очищается. Ничего не делает, если строковое представление целого числа совпадает с текущим содержимым метки.
Сокращение-партнёр, если таковое имеется, отключается.
См. также setText(), QString::setNum() и setBuddy().
[slot] void QLabel::setPicture(const QPicture &picture)
Устанавливает содержимое метки в picture. Любое предыдущее содержимое очищается.
Сокращение-партнёр, если таковое имеется, отключается.
См. также picture() и setBuddy().
[virtual] QLabel::~QLabel()
Уничтожает метку.
QWidget *QLabel::buddy() const
Возвращает партнёра этой метки или nullptr, если партнёр не установлен.
См. также setBuddy().
[override virtual protected] void QLabel::changeEvent(QEvent *ev)
Переопределяет: QFrame::changeEvent(QEvent *ev).
[override virtual protected] void QLabel::contextMenuEvent(QContextMenuEvent *ev)
Переопределяет: QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual protected] bool QLabel::event(QEvent *e)
Переопределяет: QFrame::event(QEvent *e).
[override virtual protected] void QLabel::focusInEvent(QFocusEvent *ev)
Переопределяет: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] bool QLabel::focusNextPrevChild(bool next)
Переопределяет: QWidget::focusNextPrevChild(bool next).
[override virtual protected] void QLabel::focusOutEvent(QFocusEvent *ev)
Переопределяет: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual] int QLabel::heightForWidth(int w) const
Переопределяет: QWidget::heightForWidth(int w) const.
[override virtual protected] void QLabel::keyPressEvent(QKeyEvent *ev)
Переопределяет: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual] QSize QLabel::minimumSizeHint() const
Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.
[override virtual protected] void QLabel::mouseMoveEvent(QMouseEvent *ev)
Переопределяет: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QLabel::mousePressEvent(QMouseEvent *ev)
Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QLabel::mouseReleaseEvent(QMouseEvent *ev)
Переопределяет: QWidget::mouseReleaseEvent(QMouseEvent *event).
QMovie *QLabel::movie() const
Возвращает указатель на фильм метки или nullptr, если фильм не установлен.
См. также setMovie().
[override virtual protected] void QLabel::paintEvent(QPaintEvent *)
Переопределяет: QFrame::paintEvent(QPaintEvent *).
[since 6.0] QPicture QLabel::picture() const
Возвращает изображение метки.
Функция была добавлена в Qt 6.0.
[since 6.1] QTextDocument::ResourceProvider QLabel::resourceProvider() const
Возвращает поставщик ресурсов для форматированного текста этой метки.
Функция была добавлена в Qt 6.1.
См. также setResourceProvider().
int QLabel::selectionStart() const
selectionStart() возвращает индекс первой выбранного символа в метке или -1, если текст не выбран.
Примечание: На метке должно быть установлено свойство textInteractionFlags, включающее либо TextSelectableByMouse, либо TextSelectableByKeyboard.
См. также selectedText().
void QLabel::setBuddy(QWidget *buddy)
Устанавливает партнёра этой метки в buddy.
Когда пользователь нажимает на сочетание клавиш, указанное этой меткой, фокус клавиатуры переносится на партнёрский виджет метки.
Механизм партнёра доступен только для QLabels, содержащих текст, в котором один символ предваряется амперсандом, '&'. Этот символ устанавливается как сочетание клавиш. См. документацию QKeySequence::mnemonic() для получения подробной информации (чтобы отобразить фактический амперсанд, используйте '&&').
В диалоговом окне вы можете создать два виджета для ввода данных и по метке для каждого из них, и настроить геометрическую компоновку, чтобы каждая метка располагалась слева от своего виджета ввода данных (его «напарника»), например:
QLineEdit *nameEdit = new QLineEdit(this);
QLabel *nameLabel = new QLabel("&Name:", this);
nameLabel->setBuddy(nameEdit);
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit);
// (layout setup not shown) С помощью приведенного выше кода фокус переходит к полю «Имя», когда пользователь нажимает Alt+N, и к полю «Телефон», когда пользователь нажимает Alt+P.
Чтобы отменить ранее заданного «напарника», вызовите эту функцию с параметром buddy установленным в nullptr.
См. также buddy(), setText(), QShortcut и setAlignment().
[since 6.1] void QLabel::setResourceProvider(const QTextDocument::ResourceProvider &provider)
Устанавливает provider ресурсов для форматированного текста этой метки.
Примечание: Метка не принимает владения над provider.
Эта функция была добавлена в Qt 6.1.
См. также resourceProvider().
void QLabel::setSelection(int start, int length)
Выделяет текст с позиции start и длиной length символов.
Примечание: Флаги textInteractionFlags, установленные на метке, должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
См. также selectedText().
[override virtual] QSize QLabel::sizeHint() const
Переопределяет: QFrame::sizeHint() const.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qlabel.html