坐牢第三十八天(Qt)
1、使用Qt绘画事件处理画一个闹钟
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QPaintEvent>//画画处理事件
#include <QPainter>//画画
#include <QTime> //时间类
#include <QTimer> //计时器类
#include <QIcon> //图标类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void paintEvent(QPaintEvent *event);//绘制事件
public slots://timeout信号的槽函数void timeout_slot();private:Ui::Widget *ui;QPoint startpoin;//绘制起始点QTimer* timer1; //定义一个定时器类的指针quint8 hour;quint8 minute;quint8 second;int cnt;};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QtMath>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(800,800);//设置固定大小this->setWindowTitle("牛逼的闹钟");this->setWindowIcon(QIcon(":/icon/naozhong.png"));//设置窗体图标timer1 = new QTimer(this);//给定时器类指针实例化对象timer1->start(1000);//将定时器类对象的timeout信号与自定义的槽函数进行连接connect(timer1,&QTimer::timeout,this,&Widget::timeout_slot);}Widget::~Widget()
{delete ui;
}
//绘制事件处理函数
void Widget::paintEvent(QPaintEvent *event)
{QTime timer =QTime::currentTime();//获取当前时间QString t=timer.toString("hh:mm:ss");//转换为字符串QStringList tlist =t.split(":"); //以 :分割thour =tlist[0].toUInt(); //将小时传化为无符号整数minute =tlist[1].toUInt(); //将分钟传化为无符号整数second =tlist[2].toUInt(); //将秒传化为无符号整数QPainter painter(this);//实例化一个画家painter.setRenderHint(QPainter::Antialiasing, true);//准备画笔QPen pen;pen.setColor(QColor("black"));//设置颜色//给画家安排上画笔painter.setPen(pen);//设置画家坐标起点painter.translate(this->width()/2,this->height()/2);QBrush brush1(QColor("skyblue"));//刷子painter.setBrush(brush1);//给大圆填充//绘制一个圆painter.drawEllipse(QPoint(0,0),300,300);QBrush brush(QColor("red"));//刷子painter.setBrush(brush);//给节点填充//给中心点画一个节点painter.drawEllipse(QPoint(0,0),10,10);//绘制小时刻度线for(int i=0;i<12;i++){pen.setColor(QColor("black"));pen.setWidth(3);painter.setPen(pen);painter.drawLine(QPoint(0,300),QPoint(0,280));//画一个长度20的直线painter.rotate(30);//旋转画家 30度}//绘制每五分钟刻度线for(int i=0;i<60;i++){pen.setColor(QColor("black"));pen.setWidth(1);painter.setPen(pen);painter.drawLine(QPoint(0,300),QPoint(0,290));//画一个长度10的直线painter.rotate(6);//旋转画家 6度}painter.setPen(QColor(100,100,100));QFont font;font.setFamily("SimHei");font.setPointSize(16);painter.setFont(font);//绘制数字for(int i=0;i<12;++i){QPointF point(0,0);painter.save();//计算并移动绘图对象中心点point.setX(250*qCos(((60-i*30)*3.14)/180)); //我看不懂 你写就对了point.setY(250*qSin(((60-i*30)*3.14)/180)); //我看不懂 你写就对了//计算并移动绘图对象的中心点painter.translate(point.x(),-point.y());//绘制路径painter.drawText(-15, -15, 30, 30,Qt::AlignCenter,QString::number(i+1));//我看不懂 你写就对了painter.restore();}//绘制小时指针QPainter painterH(this);painterH.translate(this->width()/2,this->height()/2);pen.setColor(QColor("red"));pen.setWidth(6);painterH.setPen(pen);painterH.rotate(hour*30+(minute/10)+second/10);painterH.drawLine(0,0,0,-90);//绘制分钟指针QPainter painterM(this);painterM.translate(this->width()/2,this->height()/2);pen.setColor(QColor("green"));pen.setWidth(4);painterM.setPen(pen);painterM.rotate(minute*6+second/60*6);painterM.drawLine(0,0,0,-120);//绘制秒指针QPainter painterS(this);painterS.translate(this->width()/2,this->height()/2);pen.setColor(QColor("blue"));pen.setWidth(2);painterS.setPen(pen);painterS.rotate(second*6);painterS.drawLine(0,0,0,-150);
}
//timeout信号的槽函数
void Widget::timeout_slot()
{update();
}
效果图


2、思维导图

相关文章:
坐牢第三十八天(Qt)
1、使用Qt绘画事件处理画一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QPaintEvent>//画画处理事件 #include <QPainter>//画画 #include <QTime> //时间类 #include <QTimer>…...
(十五)、把自己的镜像推送到 DockerHub
文章目录 1、登录Docker Hub2、标记(Tag)镜像3、推送(Push)镜像4、查看镜像5、下载镜像6、设置镜像为公开或者私有 1、登录Docker Hub 需要科学上网 https://hub.docker.com/ 如果没有账户,需要先注册一个。登录命令如…...
【云岚到家-即刻体检】-day07-2-项目介绍及准备
【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1)项目简介2)界面原型3)实战目标 2 搭建实战环境1)服务端2)管理端前端工程3)用户端前端工程4)测试 3 熟悉项目代码1)接口文…...
SpringCloud Alibaba之Nacos服务注册和配置中心
(学习笔记)nacos-server版本:2.2.3 总体介绍: 1、Nacos介绍 官网:Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字…...
面试官:讲一讲Spring MVC源码解析
好看的皮囊千篇一律、有趣的灵魂万里挑一 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。…...
815. 公交路线(24.9.17)
题目 给你一个数组 routes,表示一系列公交线路。其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。例如,路线 routes[0][1,5,7] 表示第 0 辆公交车会一直按序列 1->5->7->1->5->7->1->... 这样的…...
Rust: Warp RESTful API 如何得到客户端IP?
在使用 Rust 的 Warp 框架来创建 RESTful API 时,如果你想要获取客户端的 IP 地址,通常需要在处理 HTTP 请求的函数中查看请求的头部或者底层连接的信息。不过,Warp 本身并不直接提供一个简便的 API 来直接获取客户端的 IP 地址,因…...
添加选择登录ssh终端
吼吼,这次成了一个小的瑞士军刀了 … … 一次性功能齐全,虽然只支持win10及以上...
【基于 Delphi 的人才管理系统】
基于 Delphi 的人才管理系统可以帮助企业或组织管理员工的信息,包括招聘、培训、绩效评估等方面。这种系统通常包括员工档案管理、职位发布、应聘者跟踪、培训计划安排等功能。下面是一个简化的人才管理系统设计方案及其代码示例。 系统设计概览 员工档案管理&…...
GetMaterialApp组件的用法
文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…...
ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码
1、停止mysql服务 $ service mysql stop 2、修改my.cnf文件 # 修改my.cnf文件,在文件新增 skip-grant-tables,在启动mysql时不启动grant-tables,授权表 $ sudo vim /etc/mysql/my.cnf [mysqld] skip-grant-tables 3、启动mysql服务 servic…...
Vue3项目开发——新闻发布管理系统(七)
文章目录 九、新闻分类管理模块设计开发1、新闻分类主页面设计2、封装页面组件3、改造页面4、新闻分类表格渲染4.1封装API,获取新闻分类数据4.2 表格动态渲染4.3表格增加 loading 效果5、实现新闻分类添加和编辑功能5.1 点击显示弹层5.2封装弹层组件 CateEdit5.3 准备弹层表单…...
ICMP
目录 1. 帧格式2. ICMPv4消息类型(Type = 0,Code = 0)回送应答 /(Type = 8,Code = 0)回送请求(Type = 3)目标不可达(Type = 5,Code = 1)重定向(Type = 11)ICMP超时(Type = 12)参数3. ICMPv6消息类型回见TCP/IP 对ICMP协议作介绍 ICMP(Internet Control Messag…...
Unity-Transform类-旋转
角度度相关 相对世界坐标角度 print(this.transform.eulerAngles); 相对父对象角度 print(this.transform.localEulerAngles); 注意:设置角度和设置位置一样 不能单独设置xyz 要一起设置 如果我们希望改变的 角度 是面板上显示的内容 那是改…...
如何使用 Vue 3 的 Composition API
Vue 3 引入了 Composition API,它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比,Composition API 允许你将组件的逻辑按功能组织到函数中,而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Compositio…...
Mamba环境配置教程【自用】
1. 新建一个Conda虚拟环境 conda create -n mamba python3.102. 进入该环境 conda activate mamba3. 安装torch(建议2.3.1版本)以及相应的 torchvison、torchaudio 直接进入pytorch离线包下载网址,在里面寻找对应的pytorch以及torchvison、…...
2021 年 6 月青少年软编等考 C 语言二级真题解析
目录 T1. 数字放大思路分析 T2. 统一文件名思路分析 T3. 内部元素之和思路分析 T4. 整数排序思路分析 T5. 计算好数思路分析 T1. 数字放大 给定一个整数序列以及放大倍数 x x x,将序列中每个整数放大 x x x 倍后输出。 时间限制:1 s 内存限制&#x…...
2024网络安全、应用软件系统开发决赛技术文件
用软件系统开发技术方案 一、竞赛项目 2024 年全国电子信息行业第二届职工技能竞赛四川省应用 软件系统开发选拔赛分理论比赛和实际操作两个部分。理论比赛 成绩占30%,实际操作成绩占70%。 二、理论比赛 1、理论比赛范围 ①计算机系统基础知识: …...
CSP-J初赛每日题目2(答案)
二进制数 00100100和 00010100 的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 正确答案: D \color{green}{正确答案: D} 正确答案:D 解析: \color{red}{解析:} 解析: 00100100 36 \color{r…...
为什么Node.js不适合CPU密集型应用?
Node.js不适合CPU密集型应用的原因主要基于其设计理念和核心特性,具体可以归纳为以下几点: 单线程模型 Node.js采用单线程模型来处理用户请求和异步I/O操作。虽然这种模型在处理高并发I/O密集型任务时非常高效,因为它避免了传统多线程模型中的…...
ESP32/ESP8266轻量级MQTT连接管理库espMqttManager
1. 项目概述espMqttManager是一个面向 ESP32/ESP8266 平台、基于 Arduino 框架的轻量级 MQTT 连接管理库。它并非独立 MQTT 协议栈,而是对espMqttClient(由marvinroger 开发的高性能异步 MQTT 客户端)进行工程化封装的“胶水层”,…...
JSW-8016GM4 加固交换机
■ 三层交换机,功能强大 ■ 支持16个10/100/1000M 以太网接口 ■ 支持4个10G光纤接口 ■ 支持IEEE802相关协议 ■ 2U高度,可在方舱上架安装 ■ 满足电磁兼容要求 ■ 整机加固设计,满足国军标相关要求主要参数产品类型:千兆以太网交…...
嵌入式AI开发实战:从MCU到模型部署全流程
1. 嵌入式AI开发实战:从入门到项目落地作为一名在嵌入式领域摸爬滚打多年的工程师,我深知AI技术给这个传统行业带来的变革。记得2018年第一次接触基于MCU的简单图像识别时,那种"原来嵌入式设备也能做AI"的震撼感至今难忘。如今&…...
OpenClaw飞书机器人实战:Qwen3-32B-Chat私有镜像接入
OpenClaw飞书机器人实战:Qwen3-32B-Chat私有镜像接入 1. 为什么选择OpenClaw飞书本地大模型? 去年我接手了一个小团队的效率工具改造项目,核心需求是"在不泄露内部数据的前提下,实现自动化日报生成和文件归档"。尝试过…...
掌握Pwndbg调试器:从入门到精通的界面定制与配置指南
掌握Pwndbg调试器:从入门到精通的界面定制与配置指南 【免费下载链接】pwndbg Exploit Development and Reverse Engineering with GDB & LLDB Made Easy 项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg Pwndbg作为GDB和LLDB的增强扩展&#…...
【数据结构】红黑树(Red-Black Tree)
前言在上一篇博客中,我们学习了 AVL 树,为了保持绝对的平衡,它在插入和删除时会疯狂地进行左旋和右旋。但在现代的Java集合框架中(如 TreeMap、TreeSet,以及 Java 8 之后的 HashMap),并没有选择…...
DeepSeek-Coder-V2终极指南:如何免费打造你的专属AI编程助手
DeepSeek-Coder-V2终极指南:如何免费打造你的专属AI编程助手 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 …...
Windows ISO制作与补丁集成自动化工具实战指南:从手动操作到批量部署的效率革命
Windows ISO制作与补丁集成自动化工具实战指南:从手动操作到批量部署的效率革命 【免费下载链接】Win_ISO_Patching_Scripts Win_ISO_Patching_Scripts 项目地址: https://gitcode.com/gh_mirrors/wi/Win_ISO_Patching_Scripts 在数字化时代,系统…...
探索GetQzonehistory:永久保存QQ空间记忆的数字时光机
探索GetQzonehistory:永久保存QQ空间记忆的数字时光机 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代,我们的记忆分散在各个社交平台,而Q…...
Qwen3-14B开源模型实战:跨境电商多平台产品文案批量生成
Qwen3-14B开源模型实战:跨境电商多平台产品文案批量生成 1. 跨境电商文案生成的痛点与解决方案 跨境电商运营面临的最大挑战之一,就是需要为同一款产品在不同平台(亚马逊、eBay、速卖通等)生成符合各自规范的优质文案。传统人工…...
