Qt-快速上手-QLabel

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);
});
相关推荐
kruptos17 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌17 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc18 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库18 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H18 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒18 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP19 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
_林枭_19 小时前
ZW3D二次开发_原生表单_如何设置表单左上角图标
qt·zw3d
江畔柳前堤20 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung20 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php