Qt-快速上手-QLabel

QLabel

头文件:#include <QLabel>

QLabel:标签控件,用来显示文本、图片、gif 动画;默认只读,用户不能编辑。

常用成员和方法

/**
 * @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:清空标签内容
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)可以自动调用浏览器打开链接。

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:对齐 + 自动换行

需求:

点击按钮设置长文本;开启自动换行,文字水平垂直居中。

connect(ui->btnAlign,&QPushButton::clicked,this,[=](){
    ui->label->setText("这是一段很长很长的测试文本,用来测试标签自动换行功能,超出宽度就会自动折行显示。");
    ui->label->setWordWrap(true);
    ui->label->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
});

练习 4:监听 linkActivated 信号

需求:关闭自动打开链接;点击超链接,弹出 QMessageBox 弹窗显示链接地址。

ui->label->setOpenExternalLinks(false);
connect(ui->label,&QLabel::linkActivated,this,[=](const QString &url){
    QMessageBox::information(this,"点击链接",url);
});

练习 5:setNum 显示数字

需求:点击按钮,变量自增,用setNum()把数字显示到 label 上。

// 类成员变量 int count = 0;
connect(ui->btnAdd,&QPushButton::clicked,this,[=](){
    count++;
    ui->label->setNum(count);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值