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() 。 |
数字 | 将int或double发送给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,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,则有效缩进变为部件当前font() 中 "x "字符宽度的一半。
默认情况下,缩进值为-1,即按照上述方式计算有效缩进。
访问函数:
int | indent() const |
void | setIndent(int) |
另请参阅 alignment、margin 、frameWidth() 和font()。
margin : int
此属性表示边距的宽度
margin 是框架最内层像素与内容最外层像素之间的距离。
默认 margin 为 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 。
成员函数文档
[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()、QShortcut 和setAlignment()。
[slot]
void QLabel::setMovie(QMovie *movie)
将标签内容设置为movie 。之前的内容将被清除。标签不会获得影片的所有权。
好友快捷方式(如果有)将被禁用。
[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 。之前的内容将被清除。
好友快捷方式(如果有)将被禁用。
[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.