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

发布于:2025-05-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

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界面维护更新。


网站公告

今日签到

点亮在社区的每一天
去签到