Класс 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 |
| 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 используется для отображения текста или изображения. Функциональность взаимодействия с пользователем не предоставляется. Визуальный вид метки можно настроить различными способами, и ее можно использовать для указания фокусной клавиши mnemonics для другого виджета.
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 предоставляет полезный механизм для добавления mnemonics (см. QKeySequence), который переключит фокус клавиатуры на другой виджет (называемый "партнером" QLabel). Например:
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit); В этом примере фокус клавиатуры передаётся партнеру метки (полю QLineEdit) при нажатии пользователя Alt+P. Если бы партнером была кнопка (наследующая от QAbstractButton), вызов mnemonics имитировал бы щелчок по кнопке.
См. такжеQLineEdit, QTextEdit, QPixmap, QMovie и Руководство по разработке графического интерфейса пользователя: Метка.
Документация свойств
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) |
См. также выравнивание, 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() и выравнивание.
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. Любое предыдущее содержимое очищается. Метка НЕ принимает владения над фильмом.
Сокращение "buddy" (если есть) отключается.
См. также movie() и setBuddy().
[slot] void QLabel::setNum(double num)
Это перегруженная функция.
Устанавливает содержимое метки на обычный текст, содержащий текстовое представление double num. Любое предыдущее содержимое очищается. Не делает ничего, если строковое представление double такое же, как текущее содержимое метки.
Сокращение "buddy" (если есть) отключается.
См. также setText(), QString::setNum() и setBuddy().
[slot] void QLabel::setNum(int num)
Устанавливает содержимое метки на обычный текст, содержащий текстовое представление целого числа num. Любое предыдущее содержимое очищается. Не делает ничего, если строковое представление целого числа такое же, как текущее содержимое метки.
Сокращение "buddy" (если есть) отключается.
См. также setText(), QString::setNum() и setBuddy().
[slot] void QLabel::setPicture(const QPicture &picture)
Устанавливает содержимое метки на picture. Любое предыдущее содержимое очищается.
Сокращение "buddy" (если есть) отключается.
См. также picture() и setBuddy().
[virtual] QLabel::~QLabel()
Уничтожает метку.
QWidget *QLabel::buddy() const
Возвращает метку "buddy", или nullptr, если метка "buddy" не установлена.
См. также 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.
int QLabel::selectionStart() const
selectionStart() возвращает индекс первой выбранного символа в метке или -1, если текст не выбран.
Примечание: Установленные для метки флаги textInteractionFlags должны включать TextSelectableByMouse или TextSelectableByKeyboard.
См. также selectedText().
void QLabel::setBuddy(QWidget *buddy)
Устанавливает метку "buddy" для данной метки на buddy.
Когда пользователь нажимает на комбинацию клавиш, указанную этой меткой, фокус клавиатуры передаётся виджету "buddy" метки.
Механизм "buddy" доступен только для меток QLabels, которые содержат текст, в котором один символ предваряется амперсандом (&). Этот символ устанавливается как комбинация клавиш. Подробности см. в документации к QKeySequence::mnemonic() (чтобы отобразить фактический амперсанд, используйте '&&').
В диалоговом окне вы можете создать два виджета для ввода данных и метку для каждого, и настроить геометрическое расположение так, чтобы каждая метка находилась слева от своего виджета для ввода данных (его "buddy"), например:
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", вызовите эту функцию, установив buddy в значение nullptr.
См. также buddy(), setText(), QShortcut и setAlignment().
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.0/qlabel.html