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

【Qt开发】显示类控件——QLCDNumber

目录

1,QLCDNumber的说明

2,QLCDNumber的运用


1,QLCDNumber的说明

        QLCDNumer 是一个专门用来显示数字的控件。它类似于 "老式计算器" 的效果。它的核心属性如下:

2,QLCDNumber的运用

定时器

        运用QLCDNumber,往往可能会用到定时器。定时器(Timer)是一种用于安排函数在未来某个时间点执行的机制。它们特别适用于需要定期执行某些任务的情况。

        QTimer是 Qt 中最常用的定时器类。该类创建出来的对象,会产生一个 timeout 这样的信号。该信号可以通过 start 方法来开启定时器,并且参数中设定触发 timeout 信号的周期。

定时器的基本使用步骤如下:

创建一个 QTimer 实例

QTimer* timer = new QTimer(this);

连接定时器的 timeout() 信号到槽函数:

        ​​​​​​​当定时器超时时会发出 timeout() 信号,你可以将这个信号连接到你想要执行的槽函数上。

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

启动定时器:

        对于一次性定时器,使用 start(int msec) 方法指定毫秒数后启动定时器,之后它只会触发一次 timeout() 信号。

timer->start(1000);  // 1秒后触发

停止定时器:

timer->stop();

        下面来将 QLCDNumber 和QTimer 组合起来运用。

// 设置初始值

ui->lcdNumber->display("10");

// 创建timer定时器

timer = new QTimer(this);

// 把QTimer的timeout信号和自己的槽函数进行连接

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

// 启动定时器,参数是触发timeout信号的周期,单位是ms(毫秒)

timer->start(1000);

void Widget::handle()

{

    // 先拿到LCDNumber中的数字

    int value = ui->lcdNumber->intValue();

    if (value <= 0) {

        // 数字减到0,停止定时器

        timer->stop();

        return;

    }

    ui->lcdNumber->display(value - 1);

}

        注意:说到定时器可能会想到线程。对于GUI来说,它内部包含了很多隐藏功能,Qt为了保证修改界面的过程中,线程安全是不会受到影响的,所以Qt禁掉了其它线程直接修改界面。如下操作就会报错。

ui->lcdNumber->display("10");

std::thread t([this](){

    int value = ui->lcdNumber->intValue();

    while (true) {

        std::this_thread::sleep_for(std::chrono::seconds(1));

        if (value <= 0) break;

        value -= 1;

        ui->lcdNumber->display(value);   // 该操作就是在修改界面

    }

});

        Qt 为了保证线程安全,直接要求所有的对界面的修改操作必须在主线程中完成。程序入口中的 a.exec 就会使主线程进入 “事件循环”。主线程就是专门负责GUI界面维护更新。

http://www.xdnf.cn/news/610057.html

相关文章:

  • 搭配前端食用
  • Day34 Python打卡训练营
  • 28-FreeRTOS内核控制-延时-临界区
  • MCP如何助力智能交通系统?从数据融合到精准决策
  • 科技初创企业创新推动商业未来
  • 单元测试学习笔记
  • mqtt协议(cJSON格式举例)
  • 交换机的连接方式堆叠和级联
  • 3D个人简历网站 6.弹出框
  • 基于OAuth2-proxy和Keycloak为comfyui实现SSO
  • 深入解析Spring Boot与Redis集成:高性能缓存实践
  • 软件工程(八):UML类图的几种关系
  • Redis-RedisShake数据迁移工具
  • Linux--初识文件系统fd
  • Python的FastApi随笔记
  • MySQL强化关键_016_存储引擎
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • 第四十七节:图像分割-分水岭算法
  • canal实现mysql数据同步
  • JavaWeb面试题 (一)
  • window 显示驱动开发-视频内存供应和回收(三)
  • STM32F103_Bootloader程序开发01 - 什么是IAP?跟OTA有什么关系?
  • 关于 Web 风险点原理与利用:6. 逻辑风险点
  • 跨平台三维可视化与图形库.VTK图形库.
  • CATIA高效工作指南——常规配置篇(三)
  • SAP在化工行业的数字化转型:无锡哲讯科技的赋能实践
  • 微气象在线监测装置:精准感知环境变化的科技之眼
  • win32相关(句柄表)
  • 【Mini-F5265-OB开发板试用测评】2、关于platform.c中的串口号初始化修改的建议
  • GO语言学习(九)