当前位置: 首页 > news >正文

坐牢第三十八天(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、标记&#xff08;Tag&#xff09;镜像3、推送&#xff08;Push&#xff09;镜像4、查看镜像5、下载镜像6、设置镜像为公开或者私有 1、登录Docker Hub 需要科学上网 https://hub.docker.com/ 如果没有账户&#xff0c;需要先注册一个。登录命令如…...

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1&#xff09;项目简介2&#xff09;界面原型3&#xff09;实战目标 2 搭建实战环境1&#xff09;服务端2&#xff09;管理端前端工程3&#xff09;用户端前端工程4&#xff09;测试 3 熟悉项目代码1&#xff09;接口文…...

SpringCloud Alibaba之Nacos服务注册和配置中心

&#xff08;学习笔记&#xff09;nacos-server版本&#xff1a;2.2.3 总体介绍&#xff1a; 1、Nacos介绍 官网&#xff1a;Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字…...

面试官:讲一讲Spring MVC源码解析

好看的皮囊千篇一律、有趣的灵魂万里挑一 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】获取福利&#xff0c;回复【项目】获取项目源码&#xff0c;回复【简历模板】获取简历模板&#xff0c;回复【学习路线图】获取学习路线图。…...

815. 公交路线(24.9.17)

题目 给你一个数组 routes&#xff0c;表示一系列公交线路。其中每个 routes[i] 表示一条公交线路&#xff0c;第 i 辆公交车将会在上面循环行驶。例如&#xff0c;路线 routes[0][1,5,7] 表示第 0 辆公交车会一直按序列 1->5->7->1->5->7->1->... 这样的…...

Rust: Warp RESTful API 如何得到客户端IP?

在使用 Rust 的 Warp 框架来创建 RESTful API 时&#xff0c;如果你想要获取客户端的 IP 地址&#xff0c;通常需要在处理 HTTP 请求的函数中查看请求的头部或者底层连接的信息。不过&#xff0c;Warp 本身并不直接提供一个简便的 API 来直接获取客户端的 IP 地址&#xff0c;因…...

添加选择登录ssh终端

吼吼,这次成了一个小的瑞士军刀了 … … 一次性功能齐全,虽然只支持win10及以上...

【基于 Delphi 的人才管理系统】

基于 Delphi 的人才管理系统可以帮助企业或组织管理员工的信息&#xff0c;包括招聘、培训、绩效评估等方面。这种系统通常包括员工档案管理、职位发布、应聘者跟踪、培训计划安排等功能。下面是一个简化的人才管理系统设计方案及其代码示例。 系统设计概览 员工档案管理&…...

GetMaterialApp组件的用法

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容&#xff0c;本章回中将介绍GetMaterialApp组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…...

ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码

1、停止mysql服务 $ service mysql stop 2、修改my.cnf文件 # 修改my.cnf文件&#xff0c;在文件新增 skip-grant-tables&#xff0c;在启动mysql时不启动grant-tables&#xff0c;授权表 $ 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); 注意&#xff1a;设置角度和设置位置一样 不能单独设置xyz 要一起设置 如果我们希望改变的 角度 是面板上显示的内容 那是改…...

如何使用 Vue 3 的 Composition API

Vue 3 引入了 Composition API&#xff0c;它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比&#xff0c;Composition API 允许你将组件的逻辑按功能组织到函数中&#xff0c;而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Compositio…...

Mamba环境配置教程【自用】

1. 新建一个Conda虚拟环境 conda create -n mamba python3.102. 进入该环境 conda activate mamba3. 安装torch&#xff08;建议2.3.1版本&#xff09;以及相应的 torchvison、torchaudio 直接进入pytorch离线包下载网址&#xff0c;在里面寻找对应的pytorch以及torchvison、…...

2021 年 6 月青少年软编等考 C 语言二级真题解析

目录 T1. 数字放大思路分析 T2. 统一文件名思路分析 T3. 内部元素之和思路分析 T4. 整数排序思路分析 T5. 计算好数思路分析 T1. 数字放大 给定一个整数序列以及放大倍数 x x x&#xff0c;将序列中每个整数放大 x x x 倍后输出。 时间限制&#xff1a;1 s 内存限制&#x…...

2024网络安全、应用软件系统开发决赛技术文件

用软件系统开发技术方案 一、竞赛项目 2024 年全国电子信息行业第二届职工技能竞赛四川省应用 软件系统开发选拔赛分理论比赛和实际操作两个部分。理论比赛 成绩占30%&#xff0c;实际操作成绩占70%。 二、理论比赛 1、理论比赛范围 ①计算机系统基础知识&#xff1a; …...

CSP-J初赛每日题目2(答案)

二进制数 00100100和 00010100 的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 正确答案&#xff1a; D \color{green}{正确答案&#xff1a; D} 正确答案&#xff1a;D 解析&#xff1a; \color{red}{解析&#xff1a;} 解析&#xff1a; 00100100 36 \color{r…...

为什么Node.js不适合CPU密集型应用?

Node.js不适合CPU密集型应用的原因主要基于其设计理念和核心特性&#xff0c;具体可以归纳为以下几点&#xff1a; 单线程模型 Node.js采用单线程模型来处理用户请求和异步I/O操作。虽然这种模型在处理高并发I/O密集型任务时非常高效&#xff0c;因为它避免了传统多线程模型中的…...

3分钟快速上手:用BetterNCM安装器彻底改造你的网易云音乐

3分钟快速上手&#xff1a;用BetterNCM安装器彻底改造你的网易云音乐 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在使用功能单一的网易云音乐吗&#xff1f;想不想让你的播放器拥…...

AlphaFold 3终极指南:掌握Jackhmmer与HMMER提升蛋白质结构预测精度

AlphaFold 3终极指南&#xff1a;掌握Jackhmmer与HMMER提升蛋白质结构预测精度 【免费下载链接】alphafold3 AlphaFold 3 inference pipeline. 项目地址: https://gitcode.com/gh_mirrors/alp/alphafold3 你是否在蛋白质结构预测项目中遇到MSA生成效率低下的瓶颈&#x…...

Win10家庭版别再卡了!保姆级教程:手动修复gpedit.msc路径,彻底关闭Antimalware Service

Win10家庭版性能优化实战&#xff1a;精准修复组策略路径与系统服务调优每次游戏激战正酣时突然卡顿&#xff0c;或是视频渲染到关键时刻系统响应迟缓&#xff0c;很多Win10家庭版用户都遭遇过这类困扰。任务管理器里那个名为"Antimalware Service Executable"的进程…...

混合求解器:用神经网络增强传统微分方程数值方法

1. 项目概述&#xff1a;当数值方法遇到机器学习在科学计算和工程仿真领域&#xff0c;求解常微分方程&#xff08;ODE&#xff09;和偏微分方程&#xff08;PDE&#xff09;是绕不开的核心任务。无论是模拟电路中的电流变化、预测天气系统的演变&#xff0c;还是分析机械结构的…...

Tftpd32/Tftpd64不止是TFTP!手把手教你玩转它的DHCP和Syslog服务器功能

Tftpd32/Tftpd64&#xff1a;解锁DHCP与Syslog服务的隐藏潜力当大多数人提起Tftpd32/Tftpd64时&#xff0c;第一反应往往是它作为TFTP服务器的功能。这款轻量级工具确实在文件传输领域表现出色&#xff0c;但它的能力远不止于此。今天&#xff0c;我们将深入探索这款软件中两个…...

Java数组工具类实战:设计不可实例化的静态工具类

实现一个工具类 MathUtils&#xff0c;满足以下要求&#xff1a; 1. 所有方法均为静态&#xff0c;且该类不能从外部实例化&#xff08;提示&#xff1a;使用私有构造器&#xff09;。 2. 提供三个静态方法&#xff1a;- maxArray(int[] arr)&#xff1a;返回较大值&#xff1b…...

独立站内容分层:一层给 SEO,一层给 GEO

你的内容在喂两个完全不同的"阅读者" 你的博客文章&#xff0c;从来都不只有一个读者。 传统认知里&#xff0c;独立站内容的读者只有两类&#xff1a;真人访客和搜索引擎爬虫。SEO 优化的一切工作&#xff0c;本质上都是在讨好后者&#xff0c;顺带服务前者。 但…...

开源 AI Agent Harness Engineering 框架全览:LangChain, AutoGPT, CrewAI 孰优孰劣?

开源 AI Agent Harness Engineering 框架全览:LangChain, AutoGPT, CrewAI 孰优孰劣? 关键词 AI Agent Harness Engineering、大语言模型编排(LLM Orchestration)、LangChain、AutoGPT、CrewAI、工具调用(Tool Calling)、多Agent协作、自主任务规划 摘要 随着大语言模型…...

武汉国电华美16875kVA串联谐振试验装置,这手活儿细

在超高压变电站和长距离电缆的现场&#xff0c;交流耐压试验是检验设备绝缘的“最后一关”。这位老师傅经手过不少大工程&#xff0c;他说&#xff0c;面对GIS、大型变压器这些“大块头”电容性试品&#xff0c;能不能顺利“过关”&#xff0c;往往就看串联谐振装置顶不顶得住。…...

实战解锁:在Blender中掌握专业级MMD动画制作全流程

实战解锁&#xff1a;在Blender中掌握专业级MMD动画制作全流程 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools MMD …...