当前位置: 首页 > article >正文

(动画)Qt控件 QLCDNumer

文章目录

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

LCD Number

1. 介绍

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

2. 核心属性

属性说明
intValueQLCDNumber 显⽰的数字值(int)
valueQLCDNumber 显⽰的数字值(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.

led

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

QTimer* timer;
void updateTime();

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

• QTimer 表⽰定时器. 通过 start ⽅法启动定时器之后, 就会每隔⼀定周期, 触发⼀次
QTimer::timeout 信号.
• 使⽤ connect 把 QTimer::timeout 信号和 Widget::updateTime 连接起来, 意味着每
次触发 QTimer::timeout 都会执⾏ Widget::updateTime

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 信号了

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

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

animation


http://www.kler.cn/a/407117.html

相关文章:

  • 网络爬虫——爬虫项目案例
  • uni-app 认识条件编译,了解多端部署
  • 基于RTEMS项目学习waf build system
  • 基于Java Springboot付费自习室管理系统
  • 【前端】第12节:Vue3新特性
  • 单头蜗杆铣刀计算——记录一下
  • Python Scikit-learn简介
  • ValueError: bbox_params must be specified for bbox transformations
  • path.resolve、path.join
  • mfc140u.dll是什么文件,mfc140u.dll怎么解决【最新方法】
  • 碳化硅陶瓷膜的最佳使用期限
  • 重生之我在学环境变量
  • 信号signal
  • 【转】std::unique_ptr 删除器的秘密
  • 软件工程复习知识点
  • Mistral推出“Le Chat”,对标ChatGPT
  • pytest日志总结
  • 【ChatGPT】如何设计问题让ChatGPT生成创意写作内容
  • docker 容器的生命周期
  • 禁止Chrome的自动升级
  • MTK Android12 user版本MtkLogger
  • 【编译链接】什么是Copy Table及如何使用Copy Table
  • 【MYSQL】七种 SQL JOINS 的实现
  • RabbitMQ学习-One
  • 关于图论建模的一份介绍
  • 代理IP在后端开发中的应用与后端工程师的角色