本页内容

QLabel Class

QLabel 控件用于显示文本或图像。更多内容...

标题: #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 可以包含以下任何一种内容类型:

内容设置
纯文本将QString 传递给setText()方法。
富文本将包含富文本的QString 传递给setText()。
位图将一个QPixmap 传递给setPixmap()。
电影将一个QMovie 传递给setMovie()。
一个数字将一个int或double传递给setNum(),该函数会将数字转换为纯文本。
空值等同于空的纯文本。这是默认值。由clear() 设置。

警告: 将QString 传递给构造函数或调用setText()时, 请务必对输入进行安全处理,因为 QLabel 会尝试判断应将文本显示为纯文本还是富文本(即 HTML 4 标记的子集)。 您可能需要显式调用setTextFormat(),例如当您期望文本为纯文本格式但无法控制文本来源时(例如显示从 Web 加载的数据)。

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

默认情况下,标签显示left-aligned, vertically-centered 文本和图像,其中待显示文本中的制表符被automatically expanded 处理。不过,QLabel 的外观可以通过多种方式进行调整和微调。

可以通过 `setAlignment()` 和 `setIndent()` 调整内容在 QLabel 控件区域内的位置。还可以使用 `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);

在此示例中,当用户按下 Alt+P 时,键盘焦点将转移到该标签的“伙伴”(即QLineEdit )。如果“伙伴”是一个按钮(继承自QAbstractButton ),触发该助记符将模拟一次按钮点击。

另请参阅 QLineEdit 、QTextEdit 、QPixmap 以及QMovie 。

属性文档

alignment : Qt::Alignment

此属性控制标签内容的对齐方式。

默认情况下,标签内容左对齐并垂直居中。

访问函数:

Qt::Alignment alignment() const
void setAlignment(Qt::Alignment)

另请参阅 text 。

[read-only] hasSelectedText : 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)

另请参阅 对齐(alignment)、对齐位置(margin )、frameWidth() 以及font()。

margin : int

该属性控制边距的宽度。

边距是指帧的最内侧像素与内容的最外侧像素之间的距离。

默认边距为 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 : 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 。

成员函数文档

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

创建一个空标签。

parent 和控件标志f 作为参数传递给QFrame 构造函数。

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

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

创建一个显示文本“text ”的标签。

参数 `parent ` 和控件标志 `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 。

当用户按下该标签所指示的快捷键时,键盘焦点将转移到该标签的关联控件上。

“伙伴”机制仅适用于文本中包含一个以“&”符号开头的字符的 QLabel。该字符将被设为快捷键。详情请参阅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()。

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

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

如果存在“伙伴”快捷键,则将其禁用。

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

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

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

若有“伙伴”快捷键,则将其禁用。

注意:此 插槽已被重载。要连接到此插槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        label, qOverload(&QLabel::setNum));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        label, [receiver = label](int num) { receiver->setNum(num); });
有关更多示例和方法,请参阅“连接到重载槽”。

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

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

将标签内容设置为包含双精度数值num 的字符串表示形式的纯文本。此前所有内容将被清空。如果该双精度数值的字符串表示形式与标签的当前内容相同,则不执行任何操作。

如果存在“伙伴”快捷键,则将其禁用。

注意:此 插槽已被重载。要连接到此插槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        label, qOverload(&QLabel::setNum));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        label, [receiver = label](double num) { receiver->setNum(num); });
有关更多示例和方法,请参阅“连接到重载的槽”。

另请参阅 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。

© 2026 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.