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);
});
相关推荐
XR1234567881 小时前
工厂办公楼无线网络:多楼层覆盖与访客体验怎么选?
开发语言·php
JL151 小时前
Java并发编程面试全攻略-从synchronized到AQS底层原理
java·开发语言·面试·并发编程
云泽8081 小时前
Python 开发环境搭建全指南:从 Python 安装到 PyCharm 配置详解
开发语言·python·pycharm
不会代码的小猴1 小时前
2. 了解Qt
开发语言·c++·笔记·qt·算法
ZJU_统一阿萨姆1 小时前
【推理优化进阶】Hopper_Blackwell 微架构:从指令、流水线到真实性能上限
开发语言·人工智能·语言模型·架构·开源
程序喵大人3 小时前
【C++进阶】STL算法与函数对象 - 09 函数对象保存状态并复用规则
开发语言·c++·算法·stl·函数对象
hsjiasb9 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff10 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘10 小时前
C语言梦开始的地方7:函数
c语言·开发语言