Класс QLabel
Виджет QLabel обеспечивает отображение текста или изображения. Подробнее...
| Заголовок: | #include <QLabel> |
| 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(Qt::ReturnByValueConstant) const |
| QPixmap | pixmap(Qt::ReturnByValueConstant) 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 | 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 используется для отображения текста или изображения. Функциональность взаимодействия пользователя не предоставляется. Визуальный вид метки может быть настроен различными способами, и она может использоваться для указания фокусного символа mnemonic для другого виджета.
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 предоставляет полезный механизм для добавления символа mnemonic (см. QKeySequence), который установит фокус клавиатуры на другой виджет (называемый «товарищем» QLabel). Например:
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit); В этом примере фокус клавиатуры передается товарищу метки (полю QLineEdit) при нажатии Alt+P. Если товарищ был кнопкой (наследующей от QAbstractButton), активация mnemonic имитировала бы нажатие кнопки.
См. также QLineEdit, QTextEdit, QPixmap, QMovie и Руководство по проектированию графического интерфейса пользователя: Метка.
Документация свойств
alignment : Qt::Alignment
Это свойство содержит выравнивание содержимого метки.
По умолчанию содержимое метки выровнено по левому краю и вертикально по центру.
Функции доступа:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment) |
См. также text.
hasSelectedText : const bool
Это свойство указывает, есть ли выделенный текст.
hasSelectedText() возвращает true если часть или весь текст выделен пользователем; в противном случае возвращает false.
По умолчанию это свойство false.
Примечание: Установленные для метки значения textInteractionFlags должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Это свойство было добавлено в Qt 4.7.
Функции доступа:
| 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) |
См. также выравнивание, margin, frameWidth() и font().
margin : int
Это свойство содержит ширину отступа.
Отступ — это расстояние между внутренним пикселем рамки и внешним пикселем содержимого.
По умолчанию отступ равен 0.
Функции доступа:
| int | margin() const |
| void | setMargin(int) |
См. также indent.
openExternalLinks : bool
Указывает, должна ли метка QLabel автоматически открывать ссылки с помощью QDesktopServices::openUrl() вместо излучения сигнала linkActivated().
Примечание: Установленные для метки значения textInteractionFlags должны включать либо LinksAccessibleByMouse, либо LinksAccessibleByKeyboard.
Значение по умолчанию — false.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| bool | openExternalLinks() const |
| void | setOpenExternalLinks(bool open) |
См. также textInteractionFlags().
pixmap : QPixmap
Это свойство содержит растровое изображение метки.
Ранее Qt предоставлял версию pixmap(), которая возвращала растровое изображение по указателю. Эта версия теперь устарела. Чтобы сохранить совместимость со старым кодом, вы можете явно различать функцию по указателю и функцию по значению:
const QPixmap *pixmapPtr = label->pixmap(); QPixmap pixmapVal = label->pixmap(Qt::ReturnByValue);
Если вы отключите устаревшую версию, используя макрос QT_DISABLE_DEPRECATED_BEFORE, то можете опустить Qt::ReturnByValue как показано ниже:
QPixmap pixmapVal = label->pixmap();
Если растровое изображение не задано, устаревшая функция-получатель вернёт nullptr.
Установка растрового изображения очищает любое предыдущее содержимое. Если задан "buddy", его "сокращение" отключается.
Функции доступа:
| QPixmap | pixmap(Qt::ReturnByValueConstant) const |
| void | setPixmap(const QPixmap &) |
scaledContents : bool
Это свойство указывает, будет ли метка масштабировать содержимое, чтобы заполнить всё доступное пространство.
При включении и отображении растрового изображения метка будет масштабировать растровое изображение, чтобы заполнить всё доступное пространство.
По умолчанию это свойство равно false.
Функции доступа:
| bool | hasScaledContents() const |
| void | setScaledContents(bool) |
selectedText : const QString
Это свойство содержит выделенный текст.
Если текст не выделен, значение этого свойства — пустая строка.
По умолчанию это свойство содержит пустую строку.
Примечание: Установленные для метки значения textInteractionFlags должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Это свойство было добавлено в Qt 4.7.
Функции доступа:
| QString | selectedText() const |
См. также hasSelectedText().
text : QString
Это свойство содержит текст метки.
Если текст не задан, возвращается пустая строка. Установка текста очищает любое предыдущее содержимое.
Текст интерпретируется как обычный или форматированный текст в зависимости от формата; см. setTextFormat(). По умолчанию используется Qt::AutoText; т.е. QLabel пытается автоматически определить формат установленного текста. См. Поддерживаемый подмножество HTML для определения форматированного текста.
Если "buddy" задан, сочетание клавиш для "buddy" обновляется с новым текстом.
Обратите внимание, что QLabel хорошо подходит для отображения небольших документов с форматированным текстом, таких как небольшие документы, которые получают параметры документа (шрифт, цвет текста, цвет ссылки) из палитры метки и свойств шрифта. Для больших документов используйте QTextEdit в режиме только для чтения. QTextEdit также может предоставить полосу прокрутки при необходимости.
Примечание: Эта функция включает отслеживание мыши, если text содержит форматированный текст.
Функции доступа:
| QString | text() const |
| void | setText(const QString &) |
См. также setTextFormat(), setBuddy() и выравнивание.
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 4.2.
Функции доступа:
| 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.
Эта функция была добавлена в Qt 4.2.
См. также linkHovered().
[signal] void QLabel::linkHovered(const QString &link)
Этот сигнал испускается, когда пользователь наводит указатель мыши на ссылку. URL, на который указывает якорь, передаётся в link.
Эта функция была добавлена в Qt 4.2.
См. также 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 *).
QPicture QLabel::picture(Qt::ReturnByValueConstant) const
Возвращает изображение метки.
Ранее Qt предоставлял версию picture() , которая возвращала изображение по указателю. Эта версия теперь устарела. Для сохранения совместимости со старым кодом можно явно различать функцию по указателю и функцию по значению:
const QPicture *picPtr = label->picture(); QPicture picVal = label->picture(Qt::ReturnByValue);
Если вы отключите устаревшую версию с помощью макроса QT_DISABLE_DEPRECATED_BEFORE, то можете опустить Qt::ReturnByValue , как показано ниже:
QPicture picVal = label->picture();
Эта функция была добавлена в Qt 5.15.
QPixmap QLabel::pixmap(Qt::ReturnByValueConstant) const
Примечание: Функция-получатель для свойства pixmap.
Эта функция была добавлена в Qt 5.15.
int QLabel::selectionStart() const
selectionStart() возвращает индекс первой выбранной буквы в метке или -1, если текст не выбран.
Примечание: Установленные для метки textInteractionFlags должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Эта функция была введена в Qt 4.7.
См. также 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().
void QLabel::setSelection(int start, int length)
Выбирает текст с позиции start и длиной length символов.
Примечание: Установленные для метки textInteractionFlags должны включать либо TextSelectableByMouse, либо TextSelectableByKeyboard.
Эта функция была введена в Qt 4.7.
См. также 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-5.15/qlabel.html