9.20号作业实现钟表

news2025/2/27 7:35:10

1.widget.h

#include <QPainter>         //画家
#include <QTimerEvent>
#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 paintEvent(QPaintEvent *event) override;

    //定时器处理函数
     void timerEvent(QTimerEvent *e) override;



private:
    Ui::Widget *ui;
     int timer_id;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

      timer_id = this->startTimer(1000);
}

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

void Widget::paintEvent(QPaintEvent *event)
{
   // static int num=1;
    //qDebug()<<num++;
    QPainter painter(this);
    //
    QPen pen;
    pen.setColor(QColor("blue"));
    pen.setStyle(Qt::SolidLine);
    pen.setWidth(5);
    //
    painter.setPen(pen);
    //
    painter.translate(this->width()/2,this->height()/2);
    //设置画刷和偏移坐标系
    painter.rotate(0);
    painter.setBrush(QBrush(QColor("skyblue")));
    //画个圆
    painter.drawEllipse(QPoint(0,0),100,100);

    for(int i=0;i<360;i+=30)
    {
        painter.rotate(30);
        painter.drawLine(QPoint(0,-100),QPoint(0,-90));

    }
    for(int i=0;i<360;i+=6)
    {
        painter.rotate(6);
        painter.drawLine(QPoint(0,-100),QPoint(0,-95));

}


    //绘制时针
    painter.save();    // 保存当前的绘制状态
        // 将绘制的坐标原点移动到表盘的中心
    int h=ui->label->text().toInt();    // 获取当前的小时
    int m=ui->label_2->text().toInt();     // 获取当前的分钟
    double hourAngle = (h%12 + m/60.0)*30.0;  // 计算时针的角度,考虑分钟对时针的影响
    painter.rotate(hourAngle);    // 旋转坐标系,使时针指向正确的位置
    painter.setPen(QPen(Qt::black,5));    //设置笔

    painter.drawLine(QPoint(0,0),QPoint(0,-30));  // 绘制时针,起点是坐标原点 (0, 0),终点是时针的末端位置
    painter.restore();       // 恢复之前保存的绘制状态,以便后续绘制

    //绘制分针
    painter.save();

    double minuteAngle = m*6.0;
    painter.rotate(minuteAngle);
    painter.setPen(QPen(Qt::red,3));        //设置笔
    painter.drawLine(QPoint(0,0),QPoint(0,-50));
    painter.restore();

    //绘制秒针
    painter.save();


    int s=ui->label_3->text().toInt();
    double secondAngle = s * 6.0;
    painter.rotate(secondAngle);
    painter.setPen(QPen(Qt::blue,2));      //设置笔
    painter.drawLine(QPoint(0,0),QPoint(0,-70));
    painter.restore();
    this->update();

}



void Widget::timerEvent(QTimerEvent *e)
{

        if(e->timerId()==timer_id)
        {

            static QTime sys_t=QTime::currentTime();
            QString h=sys_t.toString("hh");
            QString m=sys_t.toString("mm");
            QString s=sys_t.toString("ss");

            ui->label->setText(h);
            ui->label_2->setText(m);
            ui->label_3->setText(s);
        }

}

main.cpp

#include "widget.h"

#include <QApplication>

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

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

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

相关文章

基于Xml方式Bean的配置-初始化方法和销毁方法

SpringBean的配置详解 Bean的初始化和销毁方法配置 Bean在被实例化后&#xff0c;可以执行指定的初始化方法完成一些初始化的操作&#xff0c;Bean在销毁之前也可以执行指定的销毁方法完成一些操作&#xff0c;初始化方法名称和销毁方法名称通过 <bean id"userService…

Linux 目录结构介绍

对上面的说明: root 目录 &#xff1a; linux 超级权限 root 的主目录 home 目录 &#xff1a; 系统默认的用户主目录&#xff0c;如果添加用户是不指定用户的主目录&#xff0c;默认在/home 下创建与用户同名的文件夹 bin 目录 &#xff1a; 存放系统所需要的重要命令&am…

设计模式:简单工厂、工厂方法、抽象工厂

参考 Java设计模式之创建型&#xff1a;工厂模式详解&#xff08;简单工厂工厂方法抽象工厂&#xff09; - 知乎 工厂方法 以生产手机为例&#xff0c;具体的UML图如下&#xff1a; 这种方法的优点是对于用户来说&#xff0c;不再需要面对具体的生产逻辑&#xff0c;只需要将生…

k8s的安装

我这里使用vmware创建了三台虚拟机&#xff0c;k8s的虚拟机建议最少2核、4G内存&#xff0c;我的电脑配置不高采用的2核、3G的配置&#xff1b; 安装k8s之前需要先安装docker&#xff0c;docker的安装参考&#xff1a;docker的安装及使用_docker的安装和使用_骑士999111的博客-…

光伏电池建模及温度光照的影响曲线MATLAB仿真

微❤关注“电气仔推送”获得资料 模型介绍&#xff1a; 需要MATLAB2018B及以上的版本&#xff01;&#xff01; 首先根据根据环境修正公式搭建光伏电池仿真模型&#xff1a; 温度变化下的IU、PU仿真及曲线&#xff1a; 光照变化下的IU、PU仿真及曲线&#xff1a; 文件说明&a…

SSD上 NVIDIA Jetson Orin NANO系統如何刷

对于AI计算性能高达40TOPS的Jetson Orin Nano开发套件来说&#xff0c;如果缺少性能够好的存储相匹配&#xff0c;会让总体执行效益大打折扣。为此&#xff0c;NVIDIA在Jetson Orin Nano开发套件上配置2个M.2接口&#xff08;如下图&#xff09;&#xff0c;最高能安装2片高速P…

Spring Boot启动源码分析

一&#xff0c;前言 版本&#xff1a;spring-boot-starter-parent版本为2.3.0 Spring Boot项目的启动入口是一个main方法&#xff0c;因此我们从该方法入手即可 二&#xff0c;源码分析 跟踪run方法 /*** SpringApplication的方法* param primarySource 启动类的class* p…

静态顺序表及基本操作具体实现

静态顺序表及几个基本操作 &#x1f391;定义一个顺序表&#x1f391; 初始化——置空顺序表&#x1f391;创建一个顺序表&#x1f391;打印顺序表各结点的值&#x1f38a;&#x1f38a; 顺序表基本操作&#x1f383;头插&#x1f383;尾插&#x1f383;头删&#x1f383;尾删 …

mysql报错:mysql8插入sql关键字“rank”问题

标题 一、背景二、报错展示三、排查四、结论 一、背景 在设计表的需要定义一个排名的字段&#xff0c;于是定义了“rank”字段&#xff0c;使用mybatisplus进行插入的时候&#xff0c;项目报错。 二、报错展示 1、项目插入报错 2、mysql中直接insert报错 三、排查 通过ins…

SpringCloud Gateway--网关服务基本介绍和基本原理

&#x1f600;前言 本篇博文是关于SpringCloud Gateway的基本介绍&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力…

快速解决AndroidStudio代码提示失效问题

在编写代码时&#xff0c;代码不自动提示&#xff0c;发现代码自动提示设置正常&#xff0c;所以查询到问题原因在于节能模式的开启&#xff0c;具体解决方式如下&#xff1a; 关闭节能模式 如上图所示&#xff0c;将Power Save Mode前面的对勾去掉&#xff0c;则完成节能模式…

系统检测到您的账户不符合国家相关法律法规或《支付宝用户服务协议》约定,暂时无法签约当前产品

最新一直在开发支付宝小程序&#xff0c;遇到的各种问题颇多&#xff0c;技术上的问题都好解决&#xff0c;开发平台上的问题&#xff0c;真的是让我心力交瘁&#xff0c;自己分析不出原因&#xff0c;打支付宝客服电话永远得不到解答。 现在把自己有一些收获的问题&#xff0…

rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL

前言 最近在部署算法在板子侧遇到的一些问题汇总一下&#xff1a; 一、版本问题 经过测试现在将自己环境配置如下&#xff1a; 本地linux安装rknn-toolkit2-1.5.0 本地Linux使用的miniconda新建的一个python虚拟环境&#xff08;自行网上查找相关方法&#xff09; 安装好自…

Docker Desktop 界面功能介绍,添加国内镜像源

目录 镜像源修改设置 其他偏好设置 镜像源修改设置 默认情况下&#xff0c;Docker Desktop会从Docker Hub下载镜像&#xff0c;但在国内由于网络的原因&#xff0c;下载速度可能较慢&#xff0c;配置国内镜像源可以提速镜像下载。在Docker Desktop中配置镜像源非常简单&…

javaee之黑马乐优商城5

分析一下spu与sku的数据结构 再来说一下什么是spu standard product unit 标准产品单元 :SPU级别的规格参数通常是与整个产品类型或产品系列相关的通用参数。比如华为手机下面的p系列、荣耀系列&#xff0c;都可以标识为spu级别规格参数 sku stock keeping unit 库存保管单位…

flarum 论坛 User Statistics插件修改

此插件在中国使用日期不是很理想&#xff0c;于是决定修改代码 下面是插件信息&#xff1a; User Statistics A Flarum extension. Add some user statistics in flarum posts, this extension require clarkwinkelmann/flarum-ext-likes-received and will be installed au…

.动态内存经典题分析(1)

题目&#xff1a; 请问运⾏Test 函数会有什么样的结果&#xff1f; void GetMemory(char *p) {p (char *)malloc(100); }void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); }int main() {Test();return 0; } 代码分析&a…

面试问题之如何解释微服务

这次的面试还是感觉非常愉快&#xff0c;没有那么憋屈&#xff0c;问的问题也非常有意思。 问题 假设现在有一个人完全不懂微服务&#xff0c;你能和对方解释下什么是微服务吗&#xff1f; 面试回答 这个问题如果要完全回答好&#xff0c;感觉不是那么容易。 什么是微服务 …

云原生Kubernetes:K8S存储卷

目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 三、问题 1.生成pod一直pending 四、总结 一、理论 1.存储卷 &#xff08;1&#xff09;概念 容器磁盘上的文件的生命周期是短暂的…

ORM框架的发展历史

文章目录 JDBCJDBC操作的特点JDBC优化1.0JDBC优化2.0JDBC优化3.0 Apache DBUtils初始配置基本操作 SpringJDBC初始配置CRUD操作 HibernateORM介绍Hibernate的使用创建项目配置文件CRUD 操作其他方式 Hibernate总结 MyBatis JDBC JDBC操作的特点 最初的时候是直接通过jdbc来直…