用QT实现计时器功能

本文实例为大家分享了QT实现计时器功能的具体代码,供大家参考,具体内容如下

首先新建工程,Ctrl+N->Application(Qt)->Qt Widgets Application,然后进入设置界面,名称和路径随意就好;Build System不考虑性能用qmake比较简单;剩下的采用默认选项就行。

初始化结束后,其项目文件组织如下

  • Timer.pro 此为工程文件
  • Headers 用于存放头文件的目录
  • Sources 用于存放源代码
  • Forms 用于存放.ui文件,即界面设计文件

双击Forms下面的mainwindow.ui文件,进入图形化的UI编辑界面,左侧为各种控件,中间为程序设计的主窗口。由于一个计时器不需要太大的尺寸,故而可以直接拖动窗口右下角的三个点,更改其尺寸。也可以定位到右侧属性栏的geometry,展开后将宽度和高度分别设为400和200。

然后,将左侧Buttons下面的Push Button拖动到主窗口,然后在右侧可看到Push Button的各种属性。将QObject中的objectName改为pbStart;将QAbstractButton下的text改为start。一会儿用于开始计时。

在左侧搜索LCD,将LCD Number拖动到主窗口,将名字改为Timer,用于显示时间。

此时,我们最左侧的选项卡选中的是第三个设计,若点击第二个编辑,则可直接编辑窗口设计文件mainWindow.ui,然而只是让人看看,并不让编辑。但总之,至此已写完了一个简单的UI

接下来,要实现计时器的核心功能——计时,从而需要写c++代码。首先在.h文件中,写入需要的成员变量。考虑到要实现计时器的功能,所以至少需要一个用于计时的时钟和一个可以记录秒数的整数。故而进入mainWindow.h,在private:下输入成员,当然也不要忘了导入头文件,最终结果为

private:
    Ui::MainWindow *ui;
    QTimer * timer;
    QTime * TimeRecord;

除了成员变量,还要有成员函数。其中计时需要绑定一个函数,start按钮需要绑定一个,外加时间归零需要一个,故需三个成员函数,最终mainWindow.h内容为

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QTime>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void initTime();
    void updateTime();
    void pbStart_clicked();
private:
    Ui::MainWindow *ui;
    QTimer * timer;
    QTime * TimeRecord;
};
#endif // MAINWINDOW_H

定义好头文件,接下来就要在.cpp中具体实现了,代码总共不到50行,如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent) , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timer = new QTimer;
    TimeRecord = new QTime;
    ui->Timer->setDigitCount(8);
    initTime();     //令LCD显示00:00:00
    //连接槽函数,将timer的timeout行为,连接到updateTime函数中
    connect(timer, SIGNAL(timeout()), this, SLOT(updateTime()));
    //当点击(clicked)pbStart时,调用函数pbStart_clicked
    connect(ui->pbStart, SIGNAL(clicked()), this, SLOT(pbStart_clicked()));
}

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

void MainWindow::initTime(){
    TimeRecord->setHMS(0, 0, 0); //时间复位为0
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
}

void MainWindow::updateTime(){
    //每次更新时间,TimeRecord增加1
    *TimeRecord = TimeRecord->addSecs(1);
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
}

void MainWindow::pbStart_clicked(){
    if (QString::compare(ui->pbStart->text(),"stop")){
        //当按钮内容不为'stop'时,说明开启计时
        timer->start(1000);
        ui->pbStart->setText("stop");//计时开始后,按钮变为'stop'
    }else{
        timer->stop();
        ui->pbStart->setText("start");
        initTime();
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • QT设计秒表功能(跑步计时器)

    本文实例为大家分享了QT设计秒表功能的具体代码,供大家参考,具体内容如下 设计目标 1. 定时器开始 2.复位从0开始计时 3.记录--把记录的时间添加到QTextBrowser, append(时间) 4. QTime t(0,0,0)   t = t.addMsec( number )  t.toString (“hh:mm:ss:zzz”) 定时器(QTimer)的使用 定时器---定时发送信号timeoutQTimer 定时器类 1.创建定时器类对象QTimer mtimer; 2.把定

  • 利用QT设计秒表功能

    本文实例为大家分享了QT设计秒表功能的具体代码,供大家参考,具体内容如下 一.窗口界面的设置 可以使用属性栏digitCount来设计此时0的初始位置 二.代码的编写 1.确定时间->每间隔一秒调用一个update函数(进行换算)或者直接调用QT里面的time类:2.确定显示的方式:3.每间隔一段时间调用显示来达到动态效果:4.这里应该查看Qtime/Qlcd的help手册5.在对定时器声明时要注意需要声明成指针,后面的槽函数发出信号者要求是指针类型:6.利用基准时间与当前时间的差值来显示计时器

  • Qt实现简易秒表设计

    Qt–简易秒表设计(QTimer,Qtime,TableWiget应用),供大家参考,具体内容如下 效果图 使用QTimer和QTime两个类 思路: 1.计时功能:​ 利用QTimer中的定时器中断信号,设置每10毫秒触发一次timeout信号,在对应槽函数中对LCD number中显示的时间进行更新,即LCD屏中每十毫秒更新一次:对于时间的累加显示(QTimer是定时器)需要Qtime,在每一次timeout信号出发时,使Qtime类的time累加上10ms. 部分关键代码如下(代码并非连续

  • Qt实现简易计时器的示例代码

    目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 mainwindow.h头文件 4.2 mainwindow.cpp源文件 五.效果演示 一.项目介绍 计时器实现四个功能:开始计时.停止计时.暂停计时以及打点.当点击暂停时,开始按钮和停止按钮无法点击,此时暂停按钮变为继续.当点击停止时,开始按钮和暂停按钮无法点击,此时停止按钮变为清零. 二.项目基本配置 新建一个Mainwindow界面.基本配置与其他Qt项目类似,这里不过多介绍. 三.UI界面设计 UI界面如下

  • QT实现秒表项目

    本文实例为大家分享了QT实现秒表项目的具体代码,供大家参考,具体内容如下 源代码目录 mainwindow.ui窗口设计 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QTime> #include<QTimer> namespace Ui { class MainWindow; } class MainWindow : public QMai

  • Qt编写秒表功能

    本文实例为大家分享了Qt编写秒表的具体实现代码,供大家参考,具体内容如下 文件widget.h #ifndef WIDGET_H #define WIDGET_H #include<QTimer> #include <QWidget> #include<QString> #include<QTime> namespace Ui { class Widget; }   class Widget : public QWidget {     Q_OBJECT  

  • 基于实现Qt秒表设计

    基于Qt秒表设计 这个只是虚拟机下的Dialog中设计的秒表,大家感兴趣的可以根据自己手机的秒表界面来设计,亦或是有别的想法也可以在ui中添加函数,或者是在ui界面自己添加调整.本篇将给除了给出Qt秒表设计例子之外还会为大家提供一些常用函数. 一.Qt绘图系统简介 Qt的绘图系统允许使用相同的API在屏幕和其它打印设备上进行绘制.整个绘图系统基于 QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的操作: QPaintDevice则允许

  • PyQt5实现暗黑风格的计时器

    本文实例为大家分享了PyQt5实现暗黑风格的计时器的具体代码,供大家参考,具体内容如下 主要是学习多线程知识,使用的是QTime(),但是似乎用QThread()更多一些 (QThread()与QTimer()的优势不再赘述) 但是记下来总没错 QSS渲染使用的是qdarkstyle,因为我一直觉得这个暗黑风很帅 qdarkstyle在GitHub上一千多颗星,还是很受欢迎的 import sys from PyQt5.QtCore import * from PyQt5.QtGui impor

  • 用QT实现计时器功能

    本文实例为大家分享了QT实现计时器功能的具体代码,供大家参考,具体内容如下 首先新建工程,Ctrl+N->Application(Qt)->Qt Widgets Application,然后进入设置界面,名称和路径随意就好:Build System不考虑性能用qmake比较简单:剩下的采用默认选项就行. 初始化结束后,其项目文件组织如下 Timer.pro 此为工程文件 Headers 用于存放头文件的目录 Sources 用于存放源代码 Forms 用于存放.ui文件,即界面设计文件 双击F

  • jQuery实现简单的计时器功能实例分析

    本文实例讲述了jQuery实现简单的计时器功能.分享给大家供大家参考,具体如下: 在写项目的过程中遇到要前端60秒发送验证码的业务需求,于是用到计时器的功能: setInterval(function xxx(){ //业务逻辑 },隔多少时间执行一次) 60秒计时思路: 1.设置秒数:60s 2.设置内容:实时改变,秒数+内容 3.结束后:去掉按钮的disable,内容恢复原来样子 //计时器60秒 function timeInterval(){ $("#code_send_btn"

  • JS基于面向对象实现的多个倒计时器功能示例

    本文实例讲述了JS基于面向对象实现的多个倒计时器功能.分享给大家供大家参考,具体如下: 运行效果图如下: 实现代码如下: 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &l

  • js编写简单的计时器功能

    本文实例为大家分享了js计时器功能的编写代码,供大家参考,具体内容如下 小白一枚,如有代码不规范或者写错的地方,希望得大神指导 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,

  • C#实现的Win32控制台线程计时器功能示例

    本文实例讲述了C#实现的Win32控制台线程计时器功能.分享给大家供大家参考,具体如下: 在C#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 2.基于服务器的计时器(System.Timers.Timer) 3.线程计时器(System.Threading.Timer) 一.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 首先注意一点就是:Windows 计时器是为单线程环境

  • python实现简单的计时器功能函数

    本文实例讲述了python实现简单的计时器功能函数.分享给大家供大家参考.具体如下: 此函数通过python实现了一个简单的计时器动能: ''' Simple Timing Function. This function prints out a message with the elapsed time from the previous call. It works with most Python 2.x platforms. The function uses a simple tric

  • Android使用Handler实现定时器与倒计时器功能

    什么是Handler Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制.Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI.Handler的作用主要有两个:一是发送消息:二是处理消息,它的运作需要底层Looper和MessageQueue的支撑.MessageQueue即消息队列,它的底层用单链表实现:Looper则负责在一个循环中不断从MessageQueue中取消息,若取到了就交由Handler进

  • JS使用setInterval实现的简单计时器功能示例

    本文实例讲述了JS使用setInterval实现的简单计时器功能.分享给大家供大家参考,具体如下: 使用setInterval实现计时,并且满60秒向分钟进一,满60分钟向小时进一. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>www.jb51.net JS计时器</title> <script> window.onload =

随机推荐