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);
});
相关推荐
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁5 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超5 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int5 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项5 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
CoderYanger6 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读6 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie6 天前
Linux进程控制四大核心操作
linux·开发语言