(动画)Qt控件 QLCDNumer

文章目录

  • [LCD Number](#LCD Number)
    • [1. 介绍](#1. 介绍)
    • [2. 核心属性](#2. 核心属性)
    • [3 . 代码实现:倒计时](#3 . 代码实现:倒计时)
      • [1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.](#1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.)
      • [2. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 updateTime 函数](#2. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 updateTime 函数)
      • [3. 修改 widget.cpp, 在构造函数中初始化 QTimer](#3. 修改 widget.cpp, 在构造函数中初始化 QTimer)
      • [4. 修改 widget.cpp, 实现 updateTime](#4. 修改 widget.cpp, 实现 updateTime)
    • [4. 动画展示](#4. 动画展示)

LCD Number

1. 介绍

在Qt中,QLCDNumber 是一个用于显示数字的控件,它模仿了传统的LCD(液晶显示器)显示方式。QLCDNumber 通常用于显示数字信息,如计时器、计数器或其他数值数据。

2. 核心属性

属性 说明
intValue QLCDNumber 显⽰的数字值(int)
value QLCDNumber 显⽰的数字值(double)和 intValue 是联动的. 例如给 value 设为 3.5, intValue 的值就是 4.
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 设置⽐较⼩的 ⼩数点.

3 . 代码实现:倒计时

1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.

2. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 updateTime 函数

cpp 复制代码
QTimer* timer;
void updateTime();

3. 修改 widget.cpp, 在构造函数中初始化 QTimer

• QTimer 表⽰定时器. 通过 start ⽅法启动定时器之后, 就会每隔⼀定周期, 触发⼀次

QTimer::timeout 信号.

• 使⽤ connect 把 QTimer::timeout 信号和 Widget::updateTime 连接起来, 意味着每

次触发 QTimer::timeout 都会执⾏ Widget::updateTime

cpp 复制代码
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 创建 QTimer 实例
timer = new QTimer(this);
// 连接信号槽. QTimer 会每隔⼀定的时间触发⼀个 timeout 信号. 现在把 timeout 信号
和 updateTime 连接起来.
// 此时意味着每次触发 timeout 信号都会伴随 updateTime 函数的执⾏.
connect(timer, &QTimer::timeout, this, &Widget::updateTime);
// 启动 QTimer, 并且规定每隔 1000ms 触发⼀次 timeout 信号.
timer->start(1000);
}

4. 修改 widget.cpp, 实现 updateTime

• 通过 intValue 获取到 QLCDNumber 内部的数值.

• 如果 value 的值归 0 了, 就停⽌ QTimer . 接下来 QTimer 也就不会触发 timeout 信号了

cpp 复制代码
void Widget::updateTime() {
qDebug() << "updateTime";
int value = ui->lcdNumber->intValue();
if (value <= 0) {
// 如果时间到, 停⽌定时器.
timer->stop();
return;
}
ui->lcdNumber->display(value - 1);
}
  1. 代码总结
    widget.h
cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>
#include <QDebug>


QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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



private:
    void updateTime();
    Ui::Widget *ui;
    QTimer* timer;
};
#endif // WIDGET_H

widget.cpp

cpp 复制代码
#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->lcdNumber->display(10);
    // 创建 QTimer 实例
    timer = new QTimer(this);

    // 连接信号槽. QTimer 会每隔⼀定的时间触发⼀个 timeout 信号. 现在把 timeout 信号
    //和 updateTime 连接起来.
    // 此时意味着每次触发 timeout 信号都会伴随 updateTime 函数的执⾏.

    connect(timer, &QTimer::timeout, this, &Widget::updateTime);

    // 启动 QTimer, 并且规定每隔 1000ms 触发⼀次 timeout 信号.
    timer->start(1000);
}

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

void Widget::updateTime()
{
    qDebug() << "updateTime";
    int value = ui->lcdNumber->intValue();
    if (value <= 0) {
        // 如果时间到, 停⽌定时器.
        timer->stop();
        return;
    }
    ui->lcdNumber->display(value - 1);
}

4. 动画展示

相关推荐
Darkwanderor21 分钟前
一般枚举题目合集
c++·算法
源远流长jerry28 分钟前
右值引用和移动语义
c++
吃个糖糖43 分钟前
MFC 调用海康相机进行软触发
c++·数码相机·mfc
@我漫长的孤独流浪1 小时前
最短路与拓扑(2)
数据结构·c++·算法
٩( 'ω' )و2601 小时前
哈希表的实现01
数据结构·c++·哈希算法·散列表
靡樊1 小时前
网络基础概念
linux·服务器·网络·c++·学习
君鼎1 小时前
TCP/IP-——C++编程详解
网络·c++·tcp/ip
whoarethenext1 小时前
c/c++爬虫总结
c语言·c++·爬虫
一只努力学习的Cat.2 小时前
C++:二叉搜索树
开发语言·c++
<但凡.2 小时前
C++修炼:多态
开发语言·c++·算法