QLabel Class

QLabel 显示文本或图片. 更多...

头文件: #include <QLabel>
qmake: QT += widgets
基类: QFrame

属性

公有函数

QLabel(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
QLabel(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
~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
const QPicture *picture() const
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
virtual QSize minimumSizeHint() const
virtual QSize sizeHint() const

公有槽函数

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 &)
  • 19 个公有槽函数继承自 QWidget
  • 1 个公有槽函数继承自 QObject

信号

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

重新实现的受保护函数

virtual void changeEvent(QEvent *ev)
virtual void contextMenuEvent(QContextMenuEvent *ev)
virtual bool event(QEvent *e)
virtual void focusInEvent(QFocusEvent *ev)
virtual bool focusNextPrevChild(bool next)
virtual void focusOutEvent(QFocusEvent *ev)
virtual void keyPressEvent(QKeyEvent *ev)
virtual void mouseMoveEvent(QMouseEvent *ev)
virtual void mousePressEvent(QMouseEvent *ev)
virtual void mouseReleaseEvent(QMouseEvent *ev)
virtual void paintEvent(QPaintEvent *)
  • 4 个受保护的函数继承自 QFrame
  • 35 个受保护的函数继承自 QWidget
  • 9 个受保护的函数继承自 QObject
  • 1 个受保护的函数继承自 QPaintDevice

其他继承的成员

  • 1 个公有变量继承自 QObject
  • 5 个静态公有成员继承自 QWidget
  • 10 个静态公有成员继承自 QObject
  • 4 个受保护的函数继承自 QFrame
  • 35 个受保护的函数继承自 QWidget
  • 9 个受保护的函数继承自 QObject
  • 1 个受保护的函数继承自 QPaintDevice
  • 1 个受保护的槽函数继承自 QWidget
  • 2 个受保护的变量继承自 QObject
  • 1 protected type inherited from QPaintDevice

详细描述

QLabel (标签)显示文本或图片, 不提供用户交互功能. 标签的视觉外观有多种配置方式, 它可以用于其他widget的焦点助记键(将焦点自动设置到关联widget上).

QLabel 可以包含以下类型:

内容设置方式
纯文本调用setText()并传入包含纯文本的 QString 对象.
富文本调用setText()并传入包含富文本的 QString 对象.
图片调用setPixmap()并传入包含图片的 QPixmap 对象 .
动图(如gif)调用setMovie()并传入包含动图的 QMovie 对象 .
数字调用setNum()设置 intdouble 类型的数字, QLabel将数字转换为纯文本.
无内容类似空文本. 调用 clear() 设置.

警告: 在构造函数或调用setText()传入 QString 对象时, 由于QLabel使用HTML 4标记的子集自动判断输入数据是纯文本还是富文本, 因此你必须先清理数据. 如果你期望控制文本的格式(如, 从web端加载的数据), 你可以显示调用 setTextFormat() .

设置新的内容时, 原有内容会清空.

默认情况下, QLabel左对齐, 垂直居中 的方式显示文本和图片. QLabel 自动展开文本标签. 当然, QLabel 提供多种方式修改外观.

调用 setAlignment() 和 setIndent()设置QLabel 中的内容位置. 调用setWordWrap()设置内容以单词的边界换行. 例如, 下面代码设置一个凹陷, 右下角有两行文本的QLabel(两行文本右侧对齐方式):


  QLabel *label = new QLabel(this);
  label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
  label->setText("first line\nsecond line");
  label->setAlignment(Qt::AlignBottom | Qt::AlignRight);

QLabelQFrame 的子类, 它从其父对象中继承的函数和属性也能设置标签的边框.

QLabel 经常作为交互widget的标签. QLabel 提供可以添加助记键 (参见 QKeySequence) , 它将焦点设置在关联widget上 (这种关联widget称为 QLabel的 "buddy伙伴"). 示例:


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

上述示例中, 用户按下Alt+P时, 键盘焦点转移给标签的伙伴 (the QLineEdit). 伙伴是按钮 (继承自 QAbstractButton)时, 触发按钮的点击动作.

Screenshot of a Macintosh style labelA label shown in the Macintosh widget style.
Screenshot of a Fusion style labelA label shown in the Fusion widget style.
Screenshot of a Windows Vista style labelA label shown in the Windows Vista widget style.

参见 QLineEdit, QTextEdit, QPixmap, QMovieGUI 设计手册: 标签.

属性

alignment : Qt::Alignment

这个属性标记标签的对齐方式

默认情况下, 标签的内容采用水平左对齐, 垂直居中.

访问函数:

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

参见 text.

hasSelectedText : const bool

这个属性标记标签是否有文本选中

hasSelectedText() 返回 true : 有文本被选中; 否则返回 false.

默认情况下, 这个属性是 false.

注意: 标签上设置的 textInteractionFlags 需要包含 TextSelectableByMouse 或 TextSelectableByKeyboard.

This property was introduced in Qt 4.7.

访问函数:

bool hasSelectedText() const

参见 selectedText().

indent : int

这个标签标记标签的像素缩进值

如果标签显示文本, alignment() 是 Qt::AlignLeft, 缩进值应用于左边沿; alignment() 是 Qt::AlignRight, 缩进值应用于右边沿; alignment() 是 Qt::AlignTop, 缩进值应用于上边沿; alignment() 是 Qt::AlignBottom, 缩进值应用于下边沿.

缩进值是负数或未设置(-1), 标签的有效缩进值计算方式: 若 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() 打开URL链接, 还是发送 linkActivated() 信号.

注意: 标签上设置的 textInteractionFlags 需要包含 LinksAccessibleByMouse 或 LinksAccessibleByKeyboard.

默认值是 false.

从 Qt 4.2 开始支持这个属性.

访问函数:

bool openExternalLinks() const
void setOpenExternalLinks(bool open)

参见 textInteractionFlags().

pixmap : QPixmap

标签的图片

默认是空.

设置这个属性会清空原有内容. 如果设置伙伴快捷方式, 则失效.

访问函数:

const QPixmap *pixmap() const
void setPixmap(const QPixmap &)

scaledContents : bool

标签是否自动缩放内容, 填充所有有效区域.

当启用时, 若标签显示图片, 则自动缩放图片填所有有效区域.

默认值是 false.

访问函数:

bool hasScaledContents() const
void setScaledContents(bool)

selectedText : const QString

被选中的文本

如果没有选中的文本, 那么属性值是空字符串.

默认值是空字符串.

注意: 标签上设置的 textInteractionFlags 需要包含 TextSelectableByMouse 或 TextSelectableByKeyboard.

从 Qt 4.7 开始支持这个属性.

访问函数:

QString selectedText() const

参见 hasSelectedText().

text : QString

标签文本

如果没有设置, 那么返回空字符串. 设置这个属性会清空原有内容.

根据文本格式, 文本被解析成纯文本或富文本, 参见 setTextFormat(). 默认设置是 Qt::AutoText; 即. QLabel 自动判断文本格式. 详见 支持 HTML 标签子集 .

如果设置伙伴widget, 这个快捷方式会更新成新文本的助记键.

注意: QLabel 非常适合展示小型富文本文档, 如从标签中获取的字体和调色板之类的设置文本. 对于大型文档, 使用 QTextEdit 的只读模式. QTextEdit 也能在需要时提供滚动条.

注意: 如果 属性 包含富文本, 这个函数会启用鼠标追踪.

访问函数:

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 4.2 开始支持.

访问函数:

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

wordWrap : bool

标签换行策略

如果这个属性是 true, 标签在必要时分词换行; 否则不会.

默认情况下, 禁用换行.

访问函数:

bool wordWrap() const
void setWordWrap(bool on)

参见 text.

成员函数

QLabel::QLabel(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

空标签构造函数, 所有参数传递给基类QFrame.

参数 parent 父对象

参数 f 窗口标志

参见 setAlignment(), setFrameStyle(), and setIndent().

QLabel::QLabel(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

带有文本的构造函数, 所有参数传递给基类QFrame.

参数 text 显示文本.

参数 parent 父对象.

参数 parent 窗口标志.

参见 setText(), setAlignment(), setFrameStyle(), and setIndent().

QLabel::~QLabel()

析构函数.

QWidget *QLabel::buddy() const

返回标签的伙伴, 没有设置返回0.

参见 setBuddy().

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

重新实现 QWidget::changeEvent().

[slot] void QLabel::clear()

清除标签任意内容.

[virtual protected] void QLabel::contextMenuEvent(QContextMenuEvent *ev)

重新实现 QWidget::contextMenuEvent().

[virtual protected] bool QLabel::event(QEvent *e)

重新实现 QObject::event().

[virtual protected] void QLabel::focusInEvent(QFocusEvent *ev)

重新实现 QWidget::focusInEvent().

[virtual protected] bool QLabel::focusNextPrevChild(bool next)

重新实现 QWidget::focusNextPrevChild().

[virtual protected] void QLabel::focusOutEvent(QFocusEvent *ev)

重新实现 QWidget::focusOutEvent().

[virtual] int QLabel::heightForWidth(int w) const

重新实现 QWidget::heightForWidth().

[virtual protected] void QLabel::keyPressEvent(QKeyEvent *ev)

重新实现 QWidget::keyPressEvent().

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

用户点击链接时发送信号. URL使用参数 link 传入.

这个函数从 Qt 4.2 开始支持.

参见 linkHovered().

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

用户鼠标悬停在链接上发送信号. URL使用参数 link 传入.

这个函数从 Qt 4.2 开始支持.

参见 linkActivated().

[virtual] QSize QLabel::minimumSizeHint() const

重新实现 QWidget::minimumSizeHint().

[virtual protected] void QLabel::mouseMoveEvent(QMouseEvent *ev)

重新实现 QWidget::mouseMoveEvent().

[virtual protected] void QLabel::mousePressEvent(QMouseEvent *ev)

重新实现 QWidget::mousePressEvent().

[virtual protected] void QLabel::mouseReleaseEvent(QMouseEvent *ev)

重新实现 QWidget::mouseReleaseEvent().

QMovie *QLabel::movie() const

返回标签动图, 没有设置返回0.

参见 setMovie().

[virtual protected] void QLabel::paintEvent(QPaintEvent *)

重新实现 QWidget::paintEvent().

const QPicture *QLabel::picture() const

返回标签图片, 没有设置返回0.

参见 setPicture().

int QLabel::selectionStart() const

返回选中的字符串的首个字符的索引, 没有选中的字符串返回-1.

注意: 标签的 textInteractionFlags 标志需要包含 TextSelectableByMouse 或 TextSelectableByKeyboard.

这个函数从 Qt 4.7 开始支持.

参见 selectedText().

void QLabel::setBuddy(QWidget *buddy)

设置标签的伙伴 buddy.

当用户按下标签指示的快捷键时,键盘焦点将转移到标签的伙伴widget.

伙伴机制仅适用于标签包含带有前缀'&'的文本. '&'后面的字符是快捷键. 详见 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"时,焦点跳转到Name输入框; 用户按"Alt+P"时, 焦点跳转到Phone输入框.

如果你想取消伙伴设置, 调用该函数时, buddy 设为 0.

参见 buddy(), setText(), QShortcut, and setAlignment().

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

设置标签内容为动图 movie, 并清除原有内容. 标签不是动图的所有者.

若有伙伴快捷键, 自动禁用.

参见 movie() 和 setBuddy().

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

设置标签的内容为整型 num字符串, 并清除原有内容. 若整形字符串与原有内容相同不执行任何操作.

若有伙伴快捷键, 自动禁用.

参见 setText(), QString::setNum(), and setBuddy().

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

重载函数.

设置标签的内容为浮点型 num字符串, 并清除原有内容. 若浮点型字符串与原有内容相同不执行任何操作.

若有伙伴快捷键, 自动禁用.

参见 setText(), QString::setNum(), and setBuddy().

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

设置标签的内容为图片 picture, 并清除原有内容.

若有伙伴快捷键, 自动禁用.

参见 picture() and setBuddy().

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

设置选中字符串.

参数 start 起始位置.

参数 length 字符串长度.

注意: 标签的 textInteractionFlags 标志需要包含 TextSelectableByMouse 或 TextSelectableByKeyboard.

这个函数从 Qt 4.7 开始支持.

参见 selectedText().

[virtual] QSize QLabel::sizeHint() const

重新实现 QWidget::sizeHint().