实现一个时钟

news2024/11/25 9:07:38

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPainter>//画家类
#include<QTime>//时间类
#include<QTimer>//定时器类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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.coloradmin.cn/o/2205222.html

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

相关文章

vue3.5系列之响应式props解构的几点技巧对比

在最新的版本3.5x中&#xff0c;对props的能力也进行了加强。下面&#xff0c;我们具体看下有哪些变化&#xff0c;给我们带来的新的体验&#xff01; 体验一 3.5之前解构props的效果 // 子组件 <template><div><h1>响应式props</h1><p>{{ co…

【储能优化】使用优化的微电网能源管理系统 (EMS)

摘要 本文介绍了一种基于优化的微电网能源管理系统&#xff08;EMS&#xff09;&#xff0c;通过储能优化实现电网、光伏发电、以及储能设备之间的智能调度。系统旨在降低能源成本、减少碳排放&#xff0c;并提高能源利用效率。利用该EMS系统&#xff0c;电网用户能够在满足负…

使用docker、编写dockerfile、httpd镜像,并启动镜像,创建httpd主页和分页。(2)

1.准备一台机子&#xff0c;准备源&#xff0c;下载docker-ce vi /etc/yum.repo.d/Centos-7.repo 加入以下内容[base] nameCentOS-$releasever - Base - mirrors.aliyun.com failovermethodpriority baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/http:/…

Midjourney中文版:创意无限,艺术之旅由此启程

Midjourney中文版——一个将你的文字想象转化为视觉艺术的神奇平台。无需繁琐的绘画技巧&#xff0c;只需简单的文字描述&#xff0c;你就能开启一场前所未有的艺术之旅。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://www.mjdiscord.c…

图纸加密软件有哪些?2024好用的10款图纸加密软件推荐!

在保护企业设计图纸和技术文档的安全性方面&#xff0c;选择合适的加密软件至关重要。2024年&#xff0c;有许多优秀的图纸加密软件可供选择。以下是我们推荐的10款图纸加密软件&#xff0c;助您有效保障重要文件的安全。 1. Ping32图纸加密软件 Ping32图纸加密软件 是一款专业…

Linux环境下配置git

总共分为两个步骤&#xff1a;安装 配置&#xff0c;最终实现通过Git拉取代码。 1.安装Git yum install git## 查看版本 git --version得到返回信息 “git version XX.XX.XX.XX” 表明Git已经安装成功。 2.配置Git 分为两个步骤&#xff1a;初始化Git并生成授权证书 代码…

<OS 有关> Docker.Desktop - Unexpected WSL error #14030 不能启动, 问题已经解决 fixed

Windows Docker.Desktop 想用时报错&#xff1a; “deploying WSL2 distributions ensuring main distro is deployed: deploying "docker-desktop": importing WSL distro "WSL2 is not supported with your current machine configuration. Please enable th…

计组-浮点数运算

计算机中的浮点数&#xff0c;就是我们数学中的 科学计数法 那么2个浮点数相加&#xff0c;以科学计数法的形式&#xff0c;来怎么计算 其对应形式如下 不能直接尾数运算是因为两个数的指数都不一样 所以第一步是对阶&#xff0c;就是让两个数的指数变成一样的 指数一样后&am…

在 EC2 AWS 中开启防火墙后将自己锁定在 SSH 之外

在搭建ftp时&#xff0c;开启了系统防火墙的几个端口&#xff0c;并且设置了防火墙开机自启。当设置好之后&#xff0c;关闭了putty&#xff0c;再次连接SSH时&#xff0c;发现连接错误。仔细一想&#xff0c;防火墙没有开启22端口&#xff0c;这不嘎了么&#xff0c;自己把自己…

C++基础面试题 | 什么是内存对齐?为什么需要内存对齐?

文章目录 回答重点扩展知识 回答重点 内存对齐是指计算机在访问内存时&#xff0c;会根据一定规则将数据存储在合适的起始地址上&#xff0c;通常是数据大小的整数倍。这样做可以提升CPU的访问效率&#xff0c;特别是在读取和写入数据时。 为什么要内存对齐&#xff1f;主要有…

如何获取商品详情:发送HTTP请求的指南

一、了解API接口 开放平台提供了一系列的API接口&#xff0c;允许开发者获取商品的详细信息。这些信息包括商品标题、价格、图片、销量、评价等。在使用这些API之前&#xff0c;你需要在开放平台注册账号并获取相应的API密钥。 二、选择合适的API接口 对于获取商品详情&#…

Java利用itextpdf实现pdf文件生成

前言 最近公司让写一个数据页面生成pdf的功能&#xff0c;找了一些市面代码感觉都太麻烦&#xff0c;就自己综合性整合了一个便捷的工具类&#xff0c;开发只需简单组装数据直接调用即可快速生成pdf文件。望大家一起学习&#xff01;&#xff01;&#xff01; 代码获取方式&am…

RTP H264封包和解包分析

基础理论 RTSP RTP RTCP SDP基础知识-CSDN博客 RTP协议回顾以及网络知识补充 ​ ​ 举例&#xff1a;在客户端向服务器发送 1MB 数据的过程中&#xff0c;涉及到多个网络层次的概念&#xff0c;包括数据切割、最大传输单元&#xff08;MTU&#xff09;、最大段大小&#xf…

项目管理——Gantt图与Pert图

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

服务端测试开发必备的技能:Mock测试!

什么是mock测试 Mock 测试就是在测试活动中&#xff0c;对于某些不容易构造或者不容易获取的数据/场景&#xff0c;用一个Mock对象来创建以便测试的测试方法。 Mock测试常见场景 无法控制第三方系统接口的返回&#xff0c;返回的数据不满足要求 依赖的接口还未开发完成&#…

分治算法(4)_快速选择_库存管理III_面试题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 分治算法(4)_快速选择_库存管理III_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f…

《自然语言处理NLP》—— 词嵌入(Word Embedding)及 Word2Vec 词嵌入方法

文章目录 一、词嵌入介绍1.示例介绍2.词嵌入的主要特点3.常见的词嵌入方法3.词嵌入的应用 二、Word2Vec 词嵌入方法1. 连续词袋模型&#xff08;CBOW&#xff09;2. Skip-gram模型3.Word2Vec方法的应用 在了解词嵌入之前需要了解什么是 独热编码&#xff08;One-Hot Encoding&…

ITSS-IT服务项目经理的价值体现

&#xff08;1&#xff09;技能提升&#xff1a;对于获得ITSS认证的服务项目经理而言&#xff0c;熟练掌握各种运维工具的使用能更精准地量化工作成果&#xff0c;更有效地管理信息技术服务流程。 这不仅提升了服务质量&#xff0c;还能在工作中展现出更高的效率和准确性&…

金蝶云星空个别字段无法录入异常处理

用户反馈&#xff0c;在录入单据时&#xff0c;第一条数据能录入数量&#xff0c;新增第二条时就无法录入。 用户反馈截图如下&#xff1a; 我登录自己的账号查看&#xff0c;并未发现相同的问题&#xff0c;同时用户也说已经退出重新登录过&#xff0c;问题依旧。 到现场看用…

硬货!Zabbix监控AIX系统服务案例

本文将介绍如何使用Zabbix自定义键值脚本方式监控AIX 系统IBM CICS中间件进程服务以及日志文件等信息。 Customer Information Control System (CICS) Transaction Server 是 IBM 针对 z/OS 的多用途事务处理软件。这是一个功能强大的应用程序服务器&#xff0c;用于大型和小型…