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

相关推荐
烂蜻蜓19 分钟前
前端已死?什么是前端
开发语言·前端·javascript·vue.js·uni-app
老猿讲编程21 分钟前
安全C语言编码规范概述
c语言·开发语言·安全
OrangeJiuce24 分钟前
【QT中的一些高级数据结构,持续更新中...】
数据结构·c++·qt
程序员-King.3 小时前
【接口封装】——13、登录窗口的标题栏内容设置
c++·qt
萌の鱼3 小时前
leetcode 2826. 将三个组排序
数据结构·c++·算法·leetcode
{⌐■_■}3 小时前
【git】工作流实战:从本地仓库到远程仓库,git pull 与git rebase使用讲解,案例解析
git
Biomamba生信基地4 小时前
两天入门R语言,周末开讲
开发语言·r语言·生信
RAN_PAND4 小时前
STL介绍1:vector、pair、string、queue、map
开发语言·c++·算法
Bio Coder4 小时前
R语言安装生物信息数据库包
开发语言·数据库·r语言
Tiger Z4 小时前
R 语言科研绘图第 27 期 --- 密度图-分组
开发语言·程序人生·r语言·贴图