QLabel 类

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
QPicture picture () const
QPixmap pixmap () const
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 )
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 用于显示文本或图像。不提供用户交互功能。标签的视觉外观可以按多种方式配置,且它可以用于为另一 Widget 指定聚焦助记键。

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

内容 设置
纯文本 传递 QString to setText ().
富文本 传递 QString 包含富文本到 setText ().
像素图 传递 QPixmap to setPixmap ().
影片 传递 QMovie to setMovie ().
数字 传递 int double to setNum (),将数字转换为纯文本。
什么都没有 如同空纯文本。这是默认。设置通过 clear ().

警告: 当传递 QString 到构造函数或调用 setText (),确保净化输入,因为 QLabel 会试着猜测它是将文本显示为纯文本还是富文本 (HTML 4 标记子集)。可能想要调用 setTextFormat () 明确,如:若期望按纯文本格式却无法控制文本源 (例如:当显示从 Web 加载的数据时)。

当使用这些函数中的任一改变内容时,任何先前内容被清零。

默认情况下,标签显示 左对齐,垂直居中 文本和图像,要显示文本中的任何 Tab 都会 自动展开 。不管怎样,可以按几种方式调节和微调 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 还可以用于指定要用于任何给定标签的 Widget 框架。

经常使用 QLabel 作为交互 Widget 标签。为此,使用 QLabel 为添加助记符提供了有用机制 (见 QKeySequence ) 将键盘聚焦设置到另一 Widget (称为 QLabel Buddy 好友)。例如:

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

在此范例中,将键盘聚焦转移给标签好友 ( QLineEdit ) 当用户按下 Alt+P 键时。若好友是按钮 (继承自 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 .

注意: The 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)

另请参阅 alignment , margin , frameWidth (),和 font ().

margin : int

此特性保存边距的宽度

边距是框架最内像素和内容最外像素之间的距离。

默认边距为 0。

访问函数:

int margin () const
void setMargin (int)

另请参阅 indent .

指定是否 QLabel 应自动打开链接使用 QDesktopServices::openUrl () 而不是发射 linkActivated () 信号。

注意: The 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

此特性保持选中文本

若没有选中文本,此特性的值为空字符串。

默认情况下,此特性包含空字符串。

注意: The 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())

构造空标签。

The parent 和 Widget 标志 f ,自变量被传递给 QFrame 构造函数。

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

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

构造标签显示文本 text .

The parent 和 Widget 标志 f ,自变量被传递给 QFrame 构造函数。

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

[虚拟] 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 引入。

[since 6.1] QTextDocument::ResourceProvider QLabel:: resourceProvider () const

返回用于此标签富文本的资源提供程序。

该函数在 Qt 6.1 引入。

另请参阅 setResourceProvider ().

int QLabel:: selectionStart () const

selectionStart() 返回标签第 1 选中字符的索引,或 -1 若未选中文本。

注意: The textInteractionFlags 设置标签需要包括 TextSelectableByMouse 或 TextSelectableByKeyboard。

另请参阅 selectedText ().

void QLabel:: setBuddy ( QWidget * buddy )

将此标签的好友设为 buddy .

当用户按下此标签指示的快捷键时,将转移键盘聚焦到标签的好友 Widget。

好友机制只可用于包含文本的某个字符以 & 和号作前缀的 QLabel。此字符被设为快捷键。见 QKeySequence::mnemonic () 文档编制了解细节 (要显示实际和号,使用 &&)。

可以在对话框中创建 2 数据输入 Widget 并为每个 Widget 创建标签,然后设置几何布局,使各标签位于其数据输入 Widget (其好友) 左侧,例如:

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)
					

采用以上代码,聚焦跳转到 Name 字段当用户按下 Alt+N 时,和跳转到 Phone 字段当用户按 Alt+P 时。

要取消先前设置的好友,调用此函数采用 buddy 设为 nullptr。

另请参阅 buddy (), setText (), QShortcut ,和 setAlignment ().

[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 。清零任何先前内容。什么都不做,若双精度的字符串表示如同标签的当前内容。

好友快捷方式 (若有的话) 被禁用。

另请参阅 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 为此标签的富文本资源。

注意: 标签 does not 拥有所有权对于 provider .

该函数在 Qt 6.1 引入。

另请参阅 resourceProvider ().

void QLabel:: setSelection ( int start , int length )

选择文本从位置 start 和对于 length 字符。

注意: The textInteractionFlags 设置标签需要包括 TextSelectableByMouse 或 TextSelectableByKeyboard。

另请参阅 selectedText ().

[override virtual] QSize QLabel:: sizeHint () const

重实现: QFrame::sizeHint() const .