QLabel Class
头文件: | #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 |
- 14 个公有函数继承自 QFrame
- 214 个公有函数继承自 QWidget
- 32 个公有函数继承自 QObject
- 14 个公有函数继承自 QPaintDevice
公有槽函数
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) |
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()设置 int 或 double 类型的数字, 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);
QLabel 是 QFrame 的子类, 它从其父对象中继承的函数和属性也能设置标签的边框.
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)时, 触发按钮的点击动作.
![]() | A label shown in the Macintosh widget style. |
![]() | A label shown in the Fusion widget style. |
![]() | A label shown in the Windows Vista widget style. |
参见 QLineEdit, QTextEdit, QPixmap, QMovie 和 GUI 设计手册: 标签.
属性
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.
openExternalLinks : bool
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, 并清除原有内容. 标签不是动图的所有者.
若有伙伴快捷键, 自动禁用.
[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, 并清除原有内容.
若有伙伴快捷键, 自动禁用.
void QLabel::setSelection(int start, int length)
设置选中字符串.
参数 start 起始位置.
参数 length 字符串长度.
注意: 标签的 textInteractionFlags 标志需要包含 TextSelectableByMouse 或 TextSelectableByKeyboard.
这个函数从 Qt 4.7 开始支持.
参见 selectedText().
[virtual]
QSize QLabel::sizeHint() const
重新实现 QWidget::sizeHint().