【Qt 学习笔记】Qt常用控件 | 显示类控件LCD Number的使用及说明

发布于:2024-04-19 ⋅ 阅读:(25) ⋅ 点赞:(0)

  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt常用控件 | 显示类控件LCD Number的使用及说明

文章编号:Qt 学习笔记 / 25


一、QLCDNumber介绍

1. 简介

QLCDNumer 是⼀个专门用来显示数字的控件,如下图所示
QLCDNumber是Qt中用于显示数字的控件类。它继承自QFrame类,并且可以用来显示整数、浮点数以及十六进制数等。
在这里插入图片描述

QLCDNumber的主要特点包括:

  1. 可以设置显示的数字位数,即控件的宽度。
  2. 可以设置显示的数字格式,如十进制、十六进制等。
  3. 支持自动调整显示的数字大小,以适应控件的大小。
  4. 可以设置显示的前缀和后缀文本。
  5. 可以设置不同的样式,如背景颜色、字体颜色等

2. 常用属性及说明

属性 说明
intValue QLCDNumber 显⽰的数字值(int)
value QLCDNumber 显⽰的数字值(double).
和 intValue 是联动的.
例如给 value 设为 1.5, intValue 的值就是 2.
另外, 设置 value 和 intValue 的⽅法名字为 display , ⽽不是 setValue 或者 setIntValue
digitCount 显⽰⼏位数字.
mode 数字显⽰形式.
1. QLCDNumber::Dec :⼗进制模式,显⽰常规的⼗进制数字。
2. QLCDNumber::Hex :⼗六进制模式,以⼗六进制格式显⽰数字。
3. QLCDNumber::Bin :⼆进制模式,以⼆进制格式显⽰数字。
4. QLCDNumber::Oct :⼋进制模式,以⼋进制格式显⽰数字。
segmentStyle 设置显⽰⻛格.
1. QLCDNumber::Flat :平⾯的显⽰⻛格,数字呈现在⼀个平坦的表⾯上。
2.QLCDNumber::Outline :轮廓显⽰⻛格,数字具有清晰的轮廓和阴影效果。
3. QLCDNumber::Filled :填充显⽰⻛格,数字被填充颜⾊并与背景区分开。
smallDecimalPoint 设置⽐较⼩的 ⼩数点.

二、QLCDNumber的样式分类

1. Filled 样式

在这里插入图片描述

2. Outline 样式

在这里插入图片描述

3. Flat 样式

在这里插入图片描述


三、QLCDNumber的使用(代码示例)

1. 10秒倒计时

  1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.
 //设置初始值
 ui->lcdNumber->display("10");

在这里插入图片描述

  1. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 handle 函数
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void handle();
private:
    Ui::Widget *ui;
    QTimer* timer;
  1. 修改 widget.cpp, 在构造函数中初始化 QTimer
  • QTimer 表⽰定时器. 通过 start ⽅法启动定时器之后, 就会每隔⼀定周期, 触发⼀次QTimer::timeout 信号
  • 使⽤ connect 把 QTimer::timeout 信号和 Widget::handle 连接起来, 意味着每次触发QTimer::timeout 都会执⾏ Widget::handle
    //创建一个QTimer实例
    timer=new QTimer(this);
    //把QTimer的timeout的信号和自己的槽函数进行链接
    connect(timer,&QTimer::timeout,this,&Widget::handle);
    //启动定时器,触发timeout的周期,单位是ms
    timer->start(1000);
  1. 修改 widget.cpp, 实现 handle 槽函数
  • 通过 intValue 获取到 QLCDNumber 内部的数值.
  • 如果 value 的值归 0 了, 就停⽌ QTimer ,也就不会触发 timeout 信号
void Widget::handle()
{

    //先拿到LCDNember中的数字
    int value=ui->lcdNumber->intValue();
    //qDebug()<<value;
    if(value<=0)
    {
        timer->stop();
        return ;
    }
    ui->lcdNumber->display(value - 1);
}

  1. 运行程序,就实现了倒计时
    在这里插入图片描述

文件代码:

#ifndef WIDGET_H
#define WIDGET_H
#include <QTimer>
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void handle();

private:
    Ui::Widget *ui;
    QTimer* timer;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置初始值
    ui->lcdNumber->display("10");
    //创建一个QTimer实例
    timer=new QTimer(this);
    //把QTimer的timeout的信号和自己的槽函数进行链接
    connect(timer,&QTimer::timeout,this,&Widget::handle);
    //启动定时器,触发timeout的周期,单位是ms
    timer->start(1000);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handle()
{

    //先拿到LCDNember中的数字
    int value=ui->lcdNumber->intValue();
    //qDebug()<<value;
    if(value<=0)
    {
        timer->stop();
        return ;
    }
    ui->lcdNumber->display(value - 1);
}

在这里插入图片描述