Qt----定时器显示系统时间

如果要在Qt中实时的显示时间,是不可以在UI线程中直接循环的, 如果在ui线程中直接循环会导致界面卡住,如果要循环的话就不要使用单独的线程,在这里我就用Qt共的定时器来实现"循环显示",就是每隔一段时间去获取系统时间并且显示,如果时间设置的合理也可以实现类似循环的效果

下面是实现的功能效果

Qt定时器类为QTimer

创建QTimer对象并且启动,就会在设置时间类发送timeout信号, 这样就可以定义槽函数关联timeout信号,来获取系统当前时间并且显示

下面是实现代码:(代码有注释)

showsystemtime.h

#ifndef SHOWSYSTEMTIME_H
#define SHOWSYSTEMTIME_H

#include <QMainWindow>
#include <QTimer>//定时器头文件

namespace Ui {
class ShowSystemTime;
}

class ShowSystemTime : public QMainWindow
{
    Q_OBJECT

public:
    explicit ShowSystemTime(QWidget *parent = 0);
    ~ShowSystemTime();

private slots:
    void on_startBt_clicked();
    void on_stopBt_clicked();

    //更新时间槽函数
    void update_time();

private:
    Ui::ShowSystemTime *ui;
    QTimer *mtimer;//定义一个定时器指针
};

#endif // SHOWSYSTEMTIME_H

showsystemtime.cpp

#include "showsystemtime.h"
#include "ui_showsystemtime.h"
#include <QTime>

ShowSystemTime::ShowSystemTime(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ShowSystemTime)
{
    ui->setupUi(this);
    //初始化定时器
    mtimer = new QTimer();
    //当定时器启动后会在设定的时间到发生timeout信号
    connect(mtimer,SIGNAL(timeout()),this, SLOT(update_time()));
}

ShowSystemTime::~ShowSystemTime()
{
    delete ui;
}

//更新显示系统时间
void ShowSystemTime::update_time()
{
    //获取系统时间
    QString time = QTime::currentTime().toString("hh:mm:ss");
    //把系统时间字符串设置在LcdNumber上显示
    ui->lcdNumber->display(time);
}

void ShowSystemTime::on_startBt_clicked()
{
    //启动定时器
    mtimer->start(1000);//设定定时时间为1000毫秒
}

void ShowSystemTime::on_stopBt_clicked()
{
    //关闭定时器
    mtimer->stop();
}

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值