实现一个时钟

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QPainter>//画家类
#include<QTime>//时间类
#include<QTimer>//定时器类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timeout_slot();void paintEvent(QPaintEvent *event) override;private:Ui::Widget *ui;QTimer q;int h=0,m=0,s=0;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->resize(500,500);q.start(1000);connect(&q,&QTimer::timeout,this,&Widget::timeout_slot);
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{QPainter maliang(this);QPen pen;pen.setStyle(Qt::SolidLine);pen.setColor(QColor("red"));maliang.setBrush(QColor("skyblue"));pen.setWidth(10);maliang.setPen(pen);//maliang.drawEllipse(250,250,100,100);maliang.translate(QPoint(250,250));maliang.drawEllipse(QPoint(0,0),150,150);for(int i=0;i<12;i++){maliang.rotate(30);maliang.drawLine(QPoint(0,130),QPoint(0,150));}for(int i=0;i<60;i++){pen.setWidth(4);maliang.setPen(pen);maliang.rotate(6);maliang.drawLine(QPoint(0,140),QPoint(0,150));}for(int i=0;i<12;i++){static int num=1;QString str=QString::number(num);maliang.rotate(30);maliang.drawText(QPoint(0,-110),str);if(num==0){num=12;}if(num>=12){num=num-12;}num++;}QPainter maliang1(this);maliang1.translate(QPoint(250,250));QPen pen1;pen1.setColor(QColor("green"));pen1.setWidth(12);maliang1.setPen(pen1);maliang1.rotate(h*30);maliang1.drawLine(QPoint(0,0),QPoint(0,-80));QPainter maliang2(this);maliang2.translate(QPoint(250,250));QPen pen2;pen2.setColor(QColor("yellow"));pen2.setWidth(8);maliang2.setPen(pen2);maliang2.rotate(m*6);maliang2.drawLine(QPoint(0,0),QPoint(0,-90));QPainter maliang3(this);maliang3.translate(QPoint(250,250));QPen pen3;pen3.setColor(QColor("black"));pen3.setWidth(6);maliang3.setPen(pen3);maliang3.rotate(s*6);maliang3.drawLine(QPoint(0,0),QPoint(0,-100));this->update();}
void Widget::timeout_slot()
{QTime systime=QTime::currentTime();h=systime.hour();if(h>12){h=h-12;}else if(h==24){h=12;}m=systime.minute();s=systime.second();}

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QTime>
#include<QTimer>
#include<QMessageBox>
#include <QTextToSpeech>
#include<qstring.h>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timeout_slot();void timerEvent(QTimerEvent *event)override;private slots://void on_label_linkActivated(const QString &link);void on_pushButton_clicked();private:Ui::Widget *ui;QTimer *objtimer;int eventtimeid;int clocktimeid;QTextToSpeech *speecher;int btn;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"
#include<qdebug.h>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QTimer *objtimer;objtimer=new QTimer(this);connect(objtimer,&QTimer::timeout,this,&Widget::timeout_slot);objtimer->start(1000);//eventimeid=this->startTimer(1000);timeout_slot();speecher = new QTextToSpeech(this);}Widget::~Widget()
{delete ui;
}
void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()==clocktimeid){if(ui->lineEdit->text()==ui->label->text()){//qDebug()<<"??????";QString msg="现在是北京时间"+ui->label->text()+"到时间了,打屁屁咯";speecher->say(msg);this->killTimer(clocktimeid);}}}
void Widget::timeout_slot()
{QTime time = QTime::currentTime();QString t=time.toString("hh::mm::ss");ui->label->setText(t);}void Widget::on_pushButton_clicked()
{btn= QMessageBox::question( this,"问题","确定时间吗",QMessageBox::Yes|QMessageBox::No);if(btn==QMessageBox::No){ui->lineEdit->clear();}clocktimeid=this->startTimer(1000);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目管理——Gantt图与Pert图

目录 前言相关知识点相关题目 前言 本文是在关于软考中软件设计师中的项目管理中的知识点&#xff0c;关于Gantt图与Pert图 相关知识点 甘特&#xff08;Gantt&#xff09;图 优点 可以清晰的描述每个任务从何时开始的&#xff0c;到何时结束&#xff0c;任务的进程情况以及…

互联网协议(IP)中最常用的端口

80 端口和 443 端口是互联网协议&#xff08;IP&#xff09;中最常用的两个端口&#xff0c;分别用于 HTTP 和 HTTPS 通信。以下是它们的作用、区别以及相关背景信息&#xff1a; 80 端口和 443 端口的作用 80 端口&#xff1a; 用于 HTTP&#xff08;HyperText Transfer Prot…

C++和OpenGL实现3D游戏编程【连载14】——VBO、VAO和EBO应用

&#x1f525;C和OpenGL实现3D游戏编程【目录】 1、本节实现的内容 我们从一开始学OpenGL到现在&#xff0c;OpenGL的图形绘图必须在glBegin()和glEnd()函数之间完成&#xff0c;在此基础之上&#xff0c;才能进行后续操作功能。但是我们今天要讨论一下OpenGL图形绘制的模式&a…

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

C++面试速通宝典——23

420. 一个类有一个int和一个char有多大&#xff1f; 假设不考虑虚函数或虚继承&#xff0c;该类的大小通常由以下情况确定&#xff1a; int类型通常占用4个字节char类型占用1个字节 由于内存对齐&#xff0c;编译器可能在int和char之间或者char后面添加填充字节&#xff0c;…

error C2081: “FILE_INFO_BY_HANDLE_CLASS”: 形参表中的名 称非法

这破玩意好像是windows sdk的问题, 更新一下版本好像就可以解决. 本质是少了 #define WDK_NTDDI_VERSION NTDDI_WIN10_NI 可以在本地的config.h 或者其他文件先替它定义一下. -------------------------------------------- 如果sdk版本没问题,应该在…

使用IMX6UL定时器EPTI实现延时

上一节&#xff0c;我们讲解了如何使用Imx6uL上面的定时器EPTI&#xff0c;这一节我们将使用EPTI进行实战&#xff0c;也就是使用定时器的效果来使用延时 在之前的实验中我们都使用到了按键&#xff0c;用到按键就要处理因为机械结构带来的按键抖动问题&#xff0c;也就是按键消…

01 为什么要学习数据结构与算法

为什么要学习数据结构与算法 一、问题提出 ​ 最早计算机的设计初衷主要用于军事上枪炮的弹道计算和火力表的测试&#xff0c;后来更多的用于科学计算&#xff0c;即数值类的计算&#xff0c;而现在&#xff0c;计算机深入到日常生活的各个方面&#xff0c;其计算的数据早已从…

毕业设计选题:基于php+vue+uniapp的新闻资讯小程序

开发语言&#xff1a;PHP框架&#xff1a;phpuniapp数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;PhpStorm 系统展示 管理员登录界面 管理员功能界面 新闻类别管理 新闻信息管理 用户管理 管理员管…

基于SpringBoot+Uniapp的家庭记账本微信小程序系统设计与实现

项目运行截图 展示效果图 展示效果图 展示效果图 展示效果图 展示效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更…

设计一个日志管理系统,支持多级别日志记录

设计一个日志管理系统,支持多级别日志记录 作为一名Python程序软件专家,我经常被问到关于日志管理系统的设计和实现。今天,我将分享一篇关于设计一个日志管理系统,支持多级别日志记录的博文,希望能够帮助大家更好地理解和使用Python语言。 日志管理系统的需求 在软件开…

MicroFlow:一种高效的基于Rust的TinyML推理引擎

英文论文标题&#xff1a;MICROFLOW: AN EFFICIENT RUST-BASED INFERENCE ENGINE FOR TINYML 中文论文标题&#xff1a;MicroFlow&#xff1a;一种高效的基于Rust的TinyML推理引擎 作者信息&#xff1a; Matteo Carnelos&#xff0c;意大利帕多瓦大学&#xff0c;Grepit AB,…

潜水打捞系统助力,破解汽车打捞难题

随着人类活动的不断扩展&#xff0c;汽车落水事故频发&#xff0c;成为救援工作中的一大难题。汽车因其重量和结构特性&#xff0c;一旦沉入水体&#xff0c;打捞工作将面临巨大挑战。传统的打捞方法往往效率低下&#xff0c;且在操作过程中可能会对汽车造成进一步的损害&#…

Excel中使用SQL语句的四种方法

总结在 Excel 中使用 SQL 语句的四种方法&#xff0c;各种方法都有各自的适用场景&#xff0c;可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下&#xff0c;使用微软 SQLExpress 版本。 方法 1&#xff1a; Excel 现…

RSA - 共模攻击

概念 RSA 共模攻击&#xff08;Common Modulus Attack&#xff09;是一种在特定条件下可以利用的 RSA 加密算法的攻击方法。它利用了当多个密文使用同一个 RSA 公钥&#xff08;即相同的模数 n&#xff09;进行加密时&#xff0c;可能可以通过密文之间的关系来获取明文信息&am…

spring揭秘25-springmvc04-servlet容器与springmvc容器总结

文章目录 【README】【1】DelegatingFilterProxy回顾【1.1】DelegatingFilterProxy初始化过滤器bean 【2】从servlet容器获取springmvc顶级web容器【2.1】从Servlet容器中获取springmvc容器总结【2.2】ContextLoaderListener加载springmvc顶级web容器并将其添加到servlet容器【…

Android开发视频预览效果

Android开发视频预览效果 视频播放不是一个简单的事情&#xff0c;得有暂停&#xff0c;继续播放等功能&#xff0c;屏幕的适配也是头疼的事情 一、思路&#xff1a; 引用的是腾讯播放器TXVodPlayer 二、效果图&#xff1a; 图片不是很直观&#xff0c;也可以看下视频 And…

wordpress调用全部页面 排除某个指定ID页面

要在WordPress中调用所有页面并排除指定的ID&#xff0c;您可以使用WP_Query类。以下是一个示例代码&#xff0c;它将查询所有页面并排除指定的页面ID&#xff1a; <?php // Page ID array to exclude $exclude_ids array( 6, 66, 666 ); //Replace here with the page I…

数据要素资料阅读笔记

目录 文章目录 目录数据价值化与数据要素市场发展报告 2024 —— 国信息通信研究院政策与经济研究所一、新理论:数据要素价值释放的经济学分析(一)从稀缺性看数据要素特征(二)数据要素市场化配置理论(三)数据要素市场分类及特征(四)数据要素价值释放路径和框架二、新进展:数据价…

(Linux和数据库)1.Linux操作系统和常用命令

了解Linux操作系统介绍 除了办公和玩游戏之外不用Linux&#xff0c;其他地方都要使用Linux&#xff08;it相关&#xff09; iOS的本质是unix&#xff08;unix是付费版本的操作系统&#xff09; unix和Linux之间很相似 Linux文件系统和目录 bin目录--放工具使用的 操作Linux远程…