Qt实现计时器

这篇具有很好参考价值的文章主要介绍了Qt实现计时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、样图

qt计时器,qt,ui,开发语言,c++

二、代码

mainwidow.h


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class QTimer;
class 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 on_button_clicked();

    void on_button2_clicked();

private:
    Ui::MainWindow *ui;
    QTimer *timer;
    QTime *time;
};

#endif // MAINWINDOW_H

mainwindow.cpp


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

#include <QTimer>
#include <QTime>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //setFixedSize(288,153);
    timer = new QTimer;
    time = new QTime;

    ui->time->setDigitCount(8);
    initTime();

    connect(timer, &QTimer::timeout, this, &MainWindow::updateTime);
}

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

void MainWindow::initTime() {
    time->setHMS(0 ,0 ,0 );
    ui->time->display(time->toString("hh:mm:ss"));

}

void MainWindow::updateTime() {
    *time = time->addSecs(1);
    ui->time->display(time->toString("hh:mm:ss"));
}

void MainWindow::on_button_clicked()
{
    if (QString::compare(ui->button->text(), "stop")) {
        //不是stop
        timer->start(100);
        ui->button->setText("stop");
    } else {
        //是
        timer->stop();
        ui->button->setText("start");
    }
}


void MainWindow::on_button2_clicked()
{
    if (timer->isActive() == false) {
        initTime();
    }
}

main.cpp


#include "mainwindow.h"

#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

ui_mainwindow.h文章来源地址https://www.toymoban.com/news/detail-723103.html

/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 6.5.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLCDNumber>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
    QWidget *centralwidget;
    QWidget *widget;
    QVBoxLayout *verticalLayout_2;
    QLCDNumber *time;
    QHBoxLayout *horizontalLayout;
    QSpacerItem *horizontalSpacer;
    QVBoxLayout *verticalLayout;
    QPushButton *button;
    QPushButton *button2;
    QMenuBar *menubar;
    QStatusBar *statusbar;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName("MainWindow");
        MainWindow->setEnabled(true);
        MainWindow->resize(352, 187);
        MainWindow->setMaximumSize(QSize(352, 187));
        MainWindow->setMouseTracking(false);
        MainWindow->setAnimated(true);
        centralwidget = new QWidget(MainWindow);
        centralwidget->setObjectName("centralwidget");
        widget = new QWidget(centralwidget);
        widget->setObjectName("widget");
        widget->setGeometry(QRect(0, 0, 351, 151));
        verticalLayout_2 = new QVBoxLayout(widget);
        verticalLayout_2->setObjectName("verticalLayout_2");
        verticalLayout_2->setContentsMargins(0, 0, 0, 0);
        time = new QLCDNumber(widget);
        time->setObjectName("time");

        verticalLayout_2->addWidget(time);

        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setObjectName("horizontalLayout");
        horizontalSpacer = new QSpacerItem(40, 38, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout->addItem(horizontalSpacer);

        verticalLayout = new QVBoxLayout();
        verticalLayout->setObjectName("verticalLayout");
        button = new QPushButton(widget);
        button->setObjectName("button");
        button->setLayoutDirection(Qt::LeftToRight);
        button->setAutoFillBackground(false);

        verticalLayout->addWidget(button);

        button2 = new QPushButton(widget);
        button2->setObjectName("button2");

        verticalLayout->addWidget(button2);


        horizontalLayout->addLayout(verticalLayout);


        verticalLayout_2->addLayout(horizontalLayout);

        MainWindow->setCentralWidget(centralwidget);
        menubar = new QMenuBar(MainWindow);
        menubar->setObjectName("menubar");
        menubar->setGeometry(QRect(0, 0, 352, 22));
        MainWindow->setMenuBar(menubar);
        statusbar = new QStatusBar(MainWindow);
        statusbar->setObjectName("statusbar");
        MainWindow->setStatusBar(statusbar);

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "\350\256\241\346\227\266\345\231\250", nullptr));
        button->setText(QCoreApplication::translate("MainWindow", "start", nullptr));
        button2->setText(QCoreApplication::translate("MainWindow", "clear", nullptr));
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

到了这里,关于Qt实现计时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(72)
  • 51单片机8位数码管计时器(汇编语言)

    使用8位数码管实现时间的显示,进位等操作 使用汇编语言完成作业 寻址 汇编语言的一些基本寻址操作 需要理解用法和含义 中断 实现计时器需要使用中断来完成延时 如果使用循环延迟的话,在计时过程中处理器不能进行其他操作 位码 设置具体的显示位,如 00H 是数码管的第一

    2023年04月08日
    浏览(53)
  • Android Jetpack Compose 用计时器demo理解Compose UI 更新的关键-------状态管理(State)

    我们都知道了Compose使用了声明式的开发范式,在这样的范式中,UI的职责更加的单一,只会对数据状态的变化作出反应,如果数据状态没有发生变化,则UI就永远不会自行的改变。假如我们把Composable的执行看成是一个函数的运算的话,那么状态就是函数的参数,输出就是生成

    2024年02月09日
    浏览(52)
  • Redis的实现四:事件循环和计时器

           我们的服务器缺少了一个 内容 : 超时 。每个网络应用程序都需要处理超时,因为网络的另一边可能会消失。不要只进行持续的IO操作,如读/写需要超时,但启动空闲的TCP连接也是一个好主意。要实现超时,必须修改事件循环,因为轮询是唯一被阻塞的东西。 我们的

    2024年01月16日
    浏览(46)
  • Unity_计时器实现的四种方式

    在Unity中,可以使用Time.deltaTime来计算游戏运行的时间。可以在每一帧的Update()函数中使用它,将它乘以一个时间因子,得到累计的时间。例如: 相信系统学习过Unity的人都听说过协程,使用协程可以轻而易举的来实现计时的操作 Unity中的InvokeRepeating函数可以在一定时间间隔内重

    2024年02月09日
    浏览(44)
  • C# 计时器(Timer )WPF窗体出现“System.InvalidOperationException:“调用线程必须为 STA,因为许多 UI 组件都需要。””

    大家在WPF窗体使用计时器(Timer)的时候可能会出现一个这样的错误“System.InvalidOperationException:“调用线程必须为 STA,因为许多 UI 组件都需要。””,这个错误一般都是线程的问题,我们可以使用另一种计时器(DispatcherTimer)来避免发生这种问题。 以上就是解决Timer计时器出

    2024年02月04日
    浏览(52)
  • 嵌入式单片机——60秒计时器的实现

    1.设计秒计时器,要求实现60秒计时,用2位LED数码管显示。 2.按键K1,实现秒表的停止和启动。

    2024年02月03日
    浏览(49)
  • 【Unity每日一记】Unity中的计时器——4种方法的实现

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月06日
    浏览(44)
  • Java 多线程6——计时器Timer的使用 + 详细代码模拟实现 + 代码优化

    本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下! 本篇文章为大家带来的仍然是多线程编程,计时器是许多场景都会应用到的一个非常方便快捷实用的类。 🦉定时器,顾

    2024年02月04日
    浏览(49)
  • 14、计时器、定时器设计与应用

    掌握同步四位二进制计数器 74LS161 的工作原理和设计方法 掌握时钟/定时器的工作原理与设计方法 任务 1:采用行为描述设计同步四位二进制计数器 74LS161 任务 2:基于 74LS161 设计时钟应用 1.创建工程并创建 Verilog 文件 建立 HDL 类型的工程 My74LS161,创建 Verilog 文件 My74LS161,

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包