QT : 完成绘制时钟
1.头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPainter>
#include <QTimer>
#include <QTime>
#include <QPaintEvent>
#include <QDebug>
#include <QBrush>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//重写绘制事件事件处理函数void paintEvent(QPaintEvent *event) override;
private slots:void updateTime();private:Ui::Widget *ui;QTimer *timer;QPixmap dial;
};
#endif // WIDGET_H
2.源文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(600,600);QTimer *timer = new QTimer(this);connect(timer,&QTimer::timeout,this,&Widget::updateTime);timer->start(1000);this->setStyleSheet("background-color:white;");
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);//实例化一个画家QPainter painter(this);//设置绘图器(QPainter)的渲染提示,开启抗锯齿效果painter.setRenderHint(QPainter::Antialiasing);//获取当前时间QTime currentTime = QTime::currentTime();int X=this->width()/2;int Y=this->height()/2;int radius=200;//绘制表盘painter.setPen(QPen(Qt::black,7)); //设置笔if(dial.isNull()){dial.load("E:\\clock.png");}if(!dial.isNull()){painter.drawPixmap(X-radius,Y-radius,radius*2,radius*2,dial);}//绘制时针painter.save(); // 保存当前的绘制状态painter.translate(X,Y); // 将绘制的坐标原点移动到表盘的中心int hour = currentTime.hour(); // 获取当前的小时int minute = currentTime.minute(); // 获取当前的分钟double hourAngle = (hour%12 + minute/60.0)*30.0; // 计算时针的角度,考虑分钟对时针的影响painter.rotate(-90); // 将坐标系旋转,使12点位置对应0度painter.rotate(hourAngle); // 旋转坐标系,使时针指向正确的位置painter.setPen(QPen(Qt::black,5)); //设置笔painter.drawLine(0,0,0,-radius*0.5); // 绘制时针,起点是坐标原点 (0, 0),终点是时针的末端位置painter.restore(); // 恢复之前保存的绘制状态,以便后续绘制//绘制分针painter.save();painter.translate(X,Y);double minuteAngle = minute*6.0;painter.rotate(-90);painter.rotate(minuteAngle);painter.setPen(QPen(Qt::red,3)); //设置笔painter.drawLine(0,0,0,-radius*0.7);painter.restore();//绘制秒针painter.save();painter.translate(X,Y);int second = currentTime.second();double secondAngle = second * 6.0;painter.rotate(-90);painter.rotate(secondAngle);painter.setPen(QPen(Qt::blue,2)); //设置笔painter.drawLine(0,0,0,-radius*0.9);painter.restore();}void Widget::updateTime()
{update();
}
相关文章:
QT : 完成绘制时钟
1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QTimer> #include <QTime> #include <QPaintEvent> #include <QDebug> #include <QBrush>QT_BEGIN_NAMESPACE namespace Ui { class…...

香港云服务器和日本云服务器哪个好?(详细对比)
购置海外服务器时,您是在乎网络速度?价格?稳定性?当这几个因素同时存在,我们该如何选择?本篇针对海外热门的两个地区,中国香港和日本,这两种云服务器谁优谁劣?各有什么亮点?逐一进行对比分析。 一、速度上来看 中国香…...
Cross Attention和 Self- Attention 的区别?
Cross Attention和Self-Attention都是深度学习中常用的注意力机制,用于处理序列数据,其中Self-Attention用于计算输入序列中每个元素之间的关系,Cross Attention则是计算两个不同序列中的元素之间的关系。它们的主要区别在于计算注意力分数时…...

《从零开始的Java世界》02面向对象(基础)
《从零开始的Java世界》系列主要讲解Javase部分,从最简单的程序设计到面向对象编程,再到异常处理、常用API的使用,最后到注解、反射,涵盖Java基础所需的所有知识点。学习者应该从学会如何使用,到知道其实现原理全方位式…...
pve关闭windows虚拟机慢
背景: 在web界面关闭windows虚拟机一直转圈,使用命令行关闭报错 qm stop 155 trying to acquire lock... cant lock file /var/lock/qemu-server/lock-155.conf - got timeout解决 删除lock,然后用命令行重新关闭 rm /var/lock/qemu-serve…...
【Django】 rest_framework接口开发流程及接口功能组成
rest_framework接口开发流程及接口功能组成 使用restframework框架开发接口,方式应该有6、7种,每个人的习惯不同,用的方法也不一样,再次不再一一详述。 我比较常用:ModelSerializerGenericAPIView 原因是用视图函数装饰…...

Kafka Log存储解析以及索引机制
1.概述 在Kafka架构,不管是生产者Producer还是消费者Consumer面向的都是Topic。Topic是逻辑上的概念,而Partition是物理上的概念。每个Partition逻辑上对应一个log文件,该log文件存储是Producer生产的数据。Producer生产的数据被不断追加到该…...
广告电商模式:探索新商业模式,实现三方共赢
随着互联网技术的发展,电商行业正在不断探索新的商业模式。其中,广告电商模式是一种创新的方式,它成功地将广告和电商相结合,实现了三方共赢的局面。一、广告电商模式的定义广告电商模式,顾名思义,是一种将…...

动态线程池框架DynamicTp v1.1.4大版本发布,新增若干实用特性
DynamicTp 简介 DynamicTp 是一个基于配置中心实现的轻量级动态线程池监控管理工具,主要功能可以总结为动态调参、通知报警、运行监控、三方包线程池管理等几大类。 DynamicTp 特性 代码零侵入:我们改变了线程池以往的使用姿势,所有配置均放…...

无线通信——Mesh自组网的多跳性
Mesh的多跳性 Mesh网络具备多跳性。什么是多跳性呢?上面说过,每一个具备Mesh网络的设备都是独立的节点。因此,当我发出一条数据时,这些数据会通过跳跃到达不同的网络节点,数据从一个节点跳到另一个节点,直到…...
QA 云计算实验问题汇总
Q Win11中VMware虚拟网卡有感叹号 2023-9-27一位同学的win11的两个VMware17的虚拟网卡都有感叹号 A 清除注册表 步骤1 关闭VMWare虚拟化软件 步骤2 使用CCleaner pro 清理注册表 步骤3 重启系统 步骤4 VMware虚拟网卡上的感叹号消失。 Q Win11上的VisualBox的网卡消失了…...
VEX —— Functions|Groups
目录 expandpointgroup —— 返回点组内点号 expandprimgroup —— 返回面组内面号 expandvertexgroup —— 返回顶点组内顶点号 inpointgroup —— 判断指定点是否在点组内 inprimgroup —— 判断指定面是否在面组内 invertexgroup —— 判断指定顶点是否在顶点组内 np…...
JavaSE18——接口
接口(interface) 1 概述 在Java中,接口是一种抽象数据类型,它定义了一组方法(没有方法体),但没有实现这些方法的具体代码。接口可以看作是一种合约,它规定了类应该具有的行为。类可以实现一个或多个接口&…...

杭州亚运会开幕式惊现数字人火炬手,动捕设备迸发动画制作新动能
在第十九届亚运会开幕式上,首次出现了“数字人”点火形式,打造了亚运史上首个数字点火仪式,这种点火方式是一种颠覆性创作的同时,这也是裸眼3D技术、现实增强和AI人工智能技术的完美结合。 此次数字火炬手的背后是采用了动捕设备&…...

ptmalloc源码分析 - malloc/free函数的实战篇(12)
目录 一、chunk的大小实验 二、获取使用中的chunk信息的实验 三、小内存块尝试获取fd信息的实验 四、常用malloc/free函数使用注意事项 看了前面11章节的内容,我们也基本了解了ptmalloc的内存管理逻辑。此处也可以通过一些手段,获取到chunk的信息&am…...
博弈论(奇偶考虑法)+计数+DP(判定转dp):CF838C
首先题目有博弈,先分析一波最优策略(步骤:分析性质)。 两个人,所以显然考虑奇偶考虑法递归考虑。 首先删就是使子问题-1,重新排列是在当前子问题里的。 一个串的排列是有限的,所以这里就可以…...

郁金香2021年游戏辅助技术中级班(一)
郁金香2021年游戏辅助技术中级班(一) 用代码读取utf8名字字节数组搜索UTF-8字符串 用CE和xdbg分析对象名字从LUA函数的角度进行分析复习怪物名字偏移 用CE和xdbg分析对象数组认识虚函数表分析对象数组 分析对象数组链表部分链表的定义链表的数据在内存里…...

加密货币交易所偿付能力的零知识证明
如何检测下一个 FTX 和 Mt. Gox 加密货币交易所 FTX 的内爆导致数十亿客户资金流失,这是加密货币历史上交易所破产的最新例子。历史可以追溯到 2014 年,当时处理 70% 比特币交易的历史最悠久、规模最大的交易所 Mt. Gox 丢失了用户的 850,000 个比特币。…...
软考网络工程师防火墙配置考点总结
(考试重点) 一、访问控制列表 管理网络当中的数据流量,实现数据过滤的重要手段。可以在路由器、三层交换、二层交换和防火墙上实现。 隐藏规则:当前面的规则都匹配不上,华为默认允许,思科默认拒绝。 分…...

【IDEA】idea恢复pom.xml文件显示灰色并带有删除线
通过idea打开spring boot项目后,发现每个服务中的pom.xml文件显示灰色并带有删除线,下面为解决方案 问题截图 解决方案 打开file——settings——build,execution,deployment——Ignored Files,把pom.xml前面的复选框去掉,去掉之…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...