QLabel Class

QLabel widget 提供文本或图像显示。更多

Header: #include <QLabel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QFrame

属性

公共函数

QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QLabel(const QString &text, 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
(since 6.0) QPicture picture() const
QPixmap pixmap() const
(since 6.1) 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)
(since 6.1) 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(int num)
void setNum(double num)
void setPicture(const QPicture &picture)
void setPixmap(const QPixmap &)
void setText(const QString &)

信号

void linkActivated(const QString &link)
void linkHovered(const QString &link)

重新实现的受保护函数

virtual void changeEvent(QEvent *ev) override
virtual void contextMenuEvent(QContextMenuEvent *ev) override
virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *ev) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *ev) override
virtual void keyPressEvent(QKeyEvent *ev) override
virtual void mouseMoveEvent(QMouseEvent *ev) override
virtual void mousePressEvent(QMouseEvent *ev) override
virtual void mouseReleaseEvent(QMouseEvent *ev) override
virtual void paintEvent(QPaintEvent *) override

详细说明

QLabel 用于显示文本或图像。不提供用户交互功能。标签的视觉外观可通过各种方式进行配置,还可用于为其他窗口小部件指定焦点记忆键。

QLabel 可以包含以下任何一种内容类型:

内容设置
纯文本setText() 传递QString
富文本将包含富文本的QString 发送至setText() 。
像素图QPixmap 发送至setPixmap() 。
电影QMovie 发送至setMovie() 。
数字intdouble发送给setNum(),后者会将数字转换为纯文本。
与空纯文本相同。这是默认值。由clear() 设置。

警告: 当向构造函数传递QString 或调用setText() 时,请确保对输入进行了消毒处理,因为 QLabel 会尝试猜测是将文本显示为纯文本还是富文本(HTML 4 标记的子集)。您可能需要明确调用setTextFormat() ,例如,如果您希望文本为纯文本格式,但又无法控制文本源(例如,显示从网络加载的数据时)。

当使用这些函数中的任何一个更改内容时,之前的内容都会被清除。

默认情况下,标签显示左对齐、垂直居中的文本和图像,其中要显示的文本中的任何制表符都是automatically expanded 。不过,QLabel 的外观可以通过多种方式进行调整和微调。

内容在 QLabel widget 区域内的位置可以通过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 通常用作交互式 widget 的标签。为此,QLabel 提供了一个有用的机制,可以添加一个助记符(见QKeySequence ),将键盘焦点设置到另一个窗口小部件(称为 QLabel 的 "伙伴")。例如

QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit);

在本例中,当用户按下 Alt+P 时,键盘焦点将转移到标签的好友(QLineEdit )。如果 "好友 "是一个按钮(继承自QAbstractButton ),触发助记符将模拟按钮点击。

另请参阅 QLineEdit,QTextEdit,QPixmapQMovie

属性文档

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,则有效缩进变为部件当前font() 中 "x "字符宽度的一半。

默认情况下,缩进值为-1,即按照上述方式计算有效缩进。

访问函数:

int indent() const
void setIndent(int)

另请参阅 alignmentmarginframeWidth() 和font()。

margin : int

此属性表示边距的宽度

margin 是框架最内层像素与内容最外层像素之间的距离。

默认 margin 为 0。

访问功能:

int margin() const
void setMargin(int)

另请参阅 indent

指定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

成员函数文档

[explicit] QLabel::QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

构造一个空标签。

parent 和 widget 标志f, 参数传递给QFrame 构造函数。

另请参阅 setAlignment(),setFrameStyle() 和setIndent()。

[explicit] QLabel::QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

构造一个显示文本text 的标签。

parent 和 widget 标志f, 参数传递给QFrame 构造函数。

另请参阅 setText(),setAlignment(),setFrameStyle() 和setIndent().

[virtual noexcept] QLabel::~QLabel()

销毁标签。

QWidget *QLabel::buddy() const

返回此标签的好友,如果当前没有设置好友,则返回 nullptr。

另请参见 setBuddy()。

[override virtual protected] void QLabel::changeEvent(QEvent *ev)

重实现:QFrame::changeEvent(QEvent *ev)。

[slot] void QLabel::clear()

清除所有标签内容。

[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).

[signal] void QLabel::linkActivated(const QString &link)

该信号在用户点击链接时发出。锚点指向的 URL 在link 中传递。

另请参阅 linkHovered() 。

[signal] void QLabel::linkHovered(const QString &link)

当用户将鼠标悬停在链接上时,就会发出该信号。锚点指向的 URL 在link 中传递。

另请参阅 linkActivated() 。

[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 中引入。

另请参阅 setPicture()。

[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()、QShortcutsetAlignment()。

[slot] void QLabel::setMovie(QMovie *movie)

将标签内容设置为movie 。之前的内容将被清除。标签不会获得影片的所有权。

好友快捷方式(如果有)将被禁用。

另请参阅 movie() 和setBuddy() 。

[slot] void QLabel::setNum(int num)

将标签内容设置为纯文本,包含整数num 的文本表示。之前的内容将被清除。如果整数的字符串表示与标签的当前内容相同,则不执行任何操作。

好友快捷方式(如果有)将被禁用。

另请参阅 setText()、QString::setNum() 和setBuddy()。

[slot] void QLabel::setNum(double num)

这是一个重载函数。

将标签内容设置为纯文本,包含双num 的文本表示。之前的内容将被清除。如果 double 的字符串表示与当前标签内容相同,则不执行任何操作。

好友快捷方式(如果有)将被禁用。

另请参阅 setText()、QString::setNum() 和setBuddy()。

[slot] void QLabel::setPicture(const QPicture &picture)

将标签内容设置为picture 。之前的内容将被清除。

好友快捷方式(如果有)将被禁用。

另请参阅 picture() 和setBuddy() 。

[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.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.