(动画)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. 动画展示

相关推荐
胖大和尚7 分钟前
clang 编译器怎么查看在编译过程中做了哪些优化
c++·clang
lsx20240616 分钟前
CSS 网页布局:从基础到进阶
开发语言
蜗牛沐雨21 分钟前
警惕 Rust 字符串的性能陷阱:`chars().nth()` 的深坑与高效之道
开发语言·后端·rust
无畏烧风32 分钟前
[Qt] visual studio code 安装 Qt插件
qt
2401_858286111 小时前
125.【C语言】数据结构之归并排序递归解法
c语言·开发语言·数据结构·算法·排序算法·归并排序
&Sinnt&1 小时前
Git 版本控制完全指南:从入门到精通
git·后端
钱彬 (Qian Bin)1 小时前
一文掌握Qt Quick数字图像处理项目开发(基于Qt 6.9 C++和QML,代码开源)
c++·开源·qml·qt quick·qt6.9·数字图像处理项目·美观界面
guygg882 小时前
基于matlab的FIR滤波器
开发语言·算法·matlab
双叶8362 小时前
(C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
c语言·开发语言·数据结构·c++
源代码•宸2 小时前
C++高频知识点(二)
开发语言·c++·经验分享