QLabel
头文件:
#include <QLabel>QLabel:标签控件,用来显示文本、图片、gif 动画;默认只读,用户不能编辑。
常用成员和方法
c++
/**
* @file QLabel
* @brief 标签控件,用于展示文本、图像、GIF动画,只读展示组件
* @details QLabel只做展示,默认不接收用户输入。
* 支持普通文本、富文本HTML、图片、动态GIF。
* 可以设置对齐、换行、超链接打开。
* @note 如果需要可编辑文本,使用QLineEdit / QTextEdit。
* @sa QLineEdit QTextEdit QPixmap QMovie
*/
/**
* @class QLabel
* @brief 只读显示标签,展示文字、图片、动画
*
* ## 常用概念
* - 文本模式:普通字符串 / HTML富文本
* - 图片模式:QPixmap图片
* - 动画模式:QMovie播放gif
* - 对齐:Qt::AlignLeft、Qt::AlignCenter、Qt::AlignRight
*
* ## 信号
* @li linkActivated(const QString &link) 点击html超链接触发
* @li linkHovered(const QString &link) 鼠标悬浮超链接触发
*/
class QLabel : public QFrame
{
public:
/**
* @brief 无参构造
* @param parent 父窗口
*/
explicit QLabel(QWidget *parent = nullptr);
/**
* @brief 构造直接设置显示文字
* @param text 显示的字符串
* @param parent 父窗口
*/
explicit QLabel(const QString &text, QWidget *parent = nullptr);
/**
* @brief 设置标签显示普通文本
* @param text 普通字符串;不会解析html标签
*/
void setText(const QString &text);
/**
* @brief 获取标签当前文本
* @return QString
*/
QString text() const;
/**
* @brief 设置富文本HTML,会解析标签,支持颜色、字体、超链接
* @param html html格式字符串
*/
void setTextFormat(Qt::TextFormat format);
/**
* @brief 设置图片,标签显示图片
* @param pixmap QPixmap图像对象
*/
void setPixmap(const QPixmap &pixmap);
/**
* @brief 设置GIF动画对象
* @param movie QMovie动画对象
*/
void setMovie(QMovie *movie);
/**
* @brief 设置文本对齐方式
* @param alignment 对齐标志,Qt::AlignLeft / Qt::AlignCenter / Qt::AlignRight,可以按位或组合垂直对齐
* @code
* label->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
* @endcode
*/
void setAlignment(Qt::Alignment alignment);
/**
* @brief 设置文本是否自动换行;为true文字超出控件宽度自动换行
* @param on true开启换行
*/
void setWordWrap(bool on);
/**
* @brief 设置标签是否可以识别并打开超链接
* @param on true:点击html链接发出linkActivated信号;不会自动打开浏览器
*/
void setOpenExternalLinks(bool on);
/**
* @brief 设置字体
* @param font QFont字体对象
*/
void setFont(const QFont &font);
/**
* @brief 清空标签内容,文字、图片全部清空
*/
void clear();
public Q_SLOTS:
/**
* @brief 设置数字显示,方便展示数字
* @param num int数字
*/
void setNum(int num);
Q_SIGNALS:
/**
* @brief 点击HTML超链接触发
* @param link 链接地址字符串
*/
void linkActivated(const QString &link);
/**
* @brief 鼠标悬浮在超链接上触发
* @param link 链接地址
*/
void linkHovered(const QString &link);
};
快速上手
练习 1:基础设置文本
需求:
- 按钮 1:设置 label 文字:
Hello QLabel - 按钮 2:读取 label 文字,状态栏展示
- 按钮 3:清空标签内容
c++
connect(ui->btnSetText,&QPushButton::clicked,this,[=](){
ui->label->setText("Hello QLabel");
});
connect(ui->btnGetText,&QPushButton::clicked,this,[=](){
QString txt = ui->label->text();
statusBar()->showMessage(txt,3000);
});
connect(ui->btnClear,&QPushButton::clicked,this,[=](){
ui->label->clear();
});
练习 2:HTML 富文本、超链接
需求:点击按钮设置富文本,文字红色,带超链接。
开启
setOpenExternalLinks(true)可以自动调用浏览器打开链接。
c++
connect(ui->btnHtml,&QPushButton::clicked,this,[=](){
QString html = R"(
<font color="red">红色提示文字</font>
<br>
<a href="https://www.qt.io">访问Qt官网</a>
)";
ui->label->setText(html);
ui->label->setOpenExternalLinks(true);
});
练习 3:对齐 + 自动换行
需求:
点击按钮设置长文本;开启自动换行,文字水平垂直居中。
c++
connect(ui->btnAlign,&QPushButton::clicked,this,[=](){
ui->label->setText("这是一段很长很长的测试文本,用来测试标签自动换行功能,超出宽度就会自动折行显示。");
ui->label->setWordWrap(true);
ui->label->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
});
练习 4:监听 linkActivated 信号
需求:关闭自动打开链接;点击超链接,弹出 QMessageBox 弹窗显示链接地址。
c++
ui->label->setOpenExternalLinks(false);
connect(ui->label,&QLabel::linkActivated,this,[=](const QString &url){
QMessageBox::information(this,"点击链接",url);
});
练习 5:setNum 显示数字
需求:点击按钮,变量自增,用setNum()把数字显示到 label 上。
c++
// 类成员变量 int count = 0;
connect(ui->btnAdd,&QPushButton::clicked,this,[=](){
count++;
ui->label->setNum(count);
});