C++QT day11
绘制时钟
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPaintEvent>//绘制事件类
#include <QDebug>//信息调试类
#include <QPainter>//画家类
#include <QTimer>//定时器类
#include <QTime>
#include <QPen>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;void drawHourHand(QPainter *painter);//时针void drawMinuteHand(QPainter *painter);//分针void drawSecondHand(QPainter *painter);//秒针void drawClockDial(QPainter *painter);//表盘
private:Ui::Widget *ui;QPen hourHandPen;QPen minuteHandPen;QPen font;static const QPoint hourHand[4];static const QPoint minuteHand[4];static const QPoint secondHand[4];};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"const QPoint Widget::hourHand[4] = {QPoint(3, 5),QPoint(0, 13),QPoint(-3, 5),QPoint(0, -40)
};
const QPoint Widget::minuteHand[4] = {QPoint(3, 5),QPoint(0, 16),QPoint(-3, 5),QPoint(0, -70)
};
const QPoint Widget::secondHand[4] = {QPoint(3, 5),QPoint(0, 18),QPoint(-3, 5),QPoint(0, -90)
};
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QTimer *timer = new QTimer(this);timer->start(1000);//一秒connect(timer,SIGNAL(timeout()), this, SLOT(update()));hourHandPen = QPen(palette().foreground(), 2.0);//调色板,2.0,1.0为颜色代码,这里是调整刻度线的颜色minuteHandPen = QPen(palette().foreground(), 1.0);setWindowTitle("The Clock");//设置对话框名称resize(600, 600);//重设对话框大小
}Widget::~Widget()
{delete ui;
}
//绘制时针
void Widget::drawHourHand(QPainter *painter)
{QTime time = QTime::currentTime();//获取当前系统的时间painter->setBrush(QColor("pink"));//设定粉色画笔painter->setPen(QColor("pink"));//将时针调成粉色painter->save();painter->rotate(30.0*(time.hour()+time.minute()/60.0));painter->drawConvexPolygon(hourHand,4);//绘制时针painter->restore();//绘制图形后复位坐标系
}
//绘制分针
void Widget::drawMinuteHand(QPainter *painter)
{QTime time = QTime::currentTime();painter->setBrush(QColor("skyblue"));painter->setPen(QColor("skyblue"));painter->save();painter->rotate(6.0*(time.minute()+time.second()/60.0));painter->drawConvexPolygon(minuteHand,4);//绘制分针painter->restore();//绘制图形后复位坐标系
}
//绘制秒针
void Widget::drawSecondHand(QPainter *painter)
{QTime time = QTime::currentTime();painter->setBrush(QColor("yellow"));painter->setPen(QColor("yellow"));painter->save();//保存坐标系,防止坐标系跑偏了painter->rotate(6.0*time.second());//注意是6.0,不是6painter->drawConvexPolygon(secondHand,4);//绘制秒针painter->restore();//绘制图形后复位坐标系
}
//绘制表盘
void Widget::drawClockDial(QPainter *painter)
{//绘制钟表刻度盘和数字for (int i = 1; i <=60; ++i){painter->save();painter->rotate(6*i);//坐标轴旋转6度if (i % 5 == 0){painter->setPen(hourHandPen);painter->drawLine(0, -98, 0, -82);painter->drawText(-20, -82, 40, 40,Qt::AlignHCenter | Qt::AlignTop,QString::number(i/5));}else{painter->setPen(minuteHandPen);painter->drawLine(0, -98, 0, -88);}painter->restore();//绘制图形后复位坐标系}
}
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QPen pen;pen.setColor(QColor("blue"));pen.setWidth(5);painter.setRenderHint(QPainter::Antialiasing, true);int side = qMin(width(), height());painter.setViewport((width() - side) / 2, (height() - side) / 2,side, side);//让时钟的位置处于对话框的中心painter.setWindow(0, 0, 200, 200);painter.translate(100,100);//重新设定坐标原点//调用重绘函数drawClockDial(&painter);drawHourHand(&painter);drawMinuteHand(&painter);drawSecondHand(&painter);//绘制时针固定圆painter.setBrush(QColor("black"));painter.drawEllipse(QPoint(0,0),3,3);}
思维导图:
相关文章:
![](https://img-blog.csdnimg.cn/5ab92a30e02d484889e1a7743937dcc6.png)
C++QT day11
绘制时钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent>//绘制事件类 #include <QDebug>//信息调试类 #include <QPainter>//画家类 #include <QTimer>//定时器类 #include <QTime> #include &…...
![](https://img-blog.csdnimg.cn/15f5202872d74787a88b502c92b46ed6.png)
Stable DIffusion 炫酷应用 | AI嵌入艺术字+光影光效
目录 1 生成AI艺术字基本流程 1.1 生成黑白图 1.2 启用ControlNet 参数设置 1.3 选择大模型 写提示词 2 不同效果组合 2.1 更改提示词 2.2 更改ControlNet 2.2.1 更改模型或者预处理器 2.2.2 更改参数 3. 其他应用 3.1 AI光影字 本节需要用到ControlNet,可…...
![](https://img-blog.csdnimg.cn/51baf48a44884f7eac75b3718fe50307.png)
C#通过重写Panel改变边框颜色与宽度的方法
在C#中,Panel控件是一个容器控件,用于在窗体或用户控件中创建一个可用于容纳其他控件的面板。Panel提供了一种将相关控件组合在一起并进行布局的方式。以下是Panel控件的详细使用方法: 在窗体上放置 Panel 控件: 在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一…...
![](https://img-blog.csdnimg.cn/fa372a73669a43e88b9e549a1c05ceae.png)
Vue2+ElementUI 静态首页案例
源码 <template><div class"app-container home"><el-row type"flex" justify"space-around" class"row-bg"><el-card class"box-card cardDiv1"><el-col :span"5"><div clas…...
![](https://img-blog.csdnimg.cn/a785b7240bce4cb68fdcfad22a2af115.png)
Linux的socket通信
关于套接字通信定义如下: 套接字对应程序猿来说就是一套网络通信的接口,使用这套接口就可以完成网络通信。网络通信的主体主要分为两部分:客户端和服务器端。在客户端和服务器通信的时候需要频繁提到三个概念:IP、端口、通信数据&…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL学习大纲
了解 MySQL 的基础知识和命令是使用此数据库的前提。以下是一些必须了解的 MySQL 概念和命令,包括基础的 CRUD(创建,读取,更新,删除)操作,以及一些高级功能: 1. 安装和启动 命令su…...
![](https://img-blog.csdnimg.cn/img_convert/b6592ab25a41dcb293d25ffcb30f5fac.png)
【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)
🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文…...
![](https://img-blog.csdnimg.cn/f9197261127343fcba2bcd9c296e7590.jpeg)
驱动开发练习,platform实现如下功能
实验要求 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of_gpio.h> #include <linux/unistd.h> #include <linux/interrupt…...
![](https://www.ngui.cc/images/no-images.jpg)
QT之QString的用法介绍
QT之QString的用法介绍 成员函数常见用法 成员函数 1)QString &append(const QString &str) 将 str 字符串追加到当前字符串末尾,并返回修改后的 QString 对象的引用。 2)QString &prepend(const QString &str) 将 str 字符…...
![](https://img-blog.csdnimg.cn/e9eb0a0d29e64a3a94cffdb152c8443f.png)
基于Java+SpringBoot+Vue3+Uniapp前后端分离考试学习一体机设计与实现2.0版本(视频讲解,已发布上线)
博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
![](https://img-blog.csdnimg.cn/0cb4d0a24ef14d52817fbfdf92822a04.png)
springboot 获取参数
1.获取简单参数 2.实体对象参数...
![](https://img-blog.csdnimg.cn/3ae4e37900db414f9ce88a53828e8856.png)
【笔记】离线Ubuntu20.04+mysql 5.7.36 + xtrabackup定时增量备份脚本
一、环境 ● Ubuntu版本查看 lsb_release -a● mysql 版本查看 mysql --version我的是ubuntu 20.04,mysql是5.7.36,所以要用 install_percona-xtrabackup-24 二、原理 备份 通过ubuntu自带的定时器运行增量备份脚本备份文件可以存储在映射后的其他…...
![](https://www.ngui.cc/images/no-images.jpg)
树哈希与换根dp:CF763D
采用的树哈希函数是: d p x w x ∑ y ∈ x d p y 2 w x 2 \Large dp_xw_x\times \sum_{y\in x}dp_y^2w_x^2 dpxwxy∈x∑dpy2wx2 发现从 x x x 到 y y y 时只有 x x x 与 y y y 的哈希值会变化,分别维护即可 #include<bits/stdc.h&…...
![](https://img-blog.csdnimg.cn/img_convert/9441b781c5451cdb2aa59dc7d02573c3.png)
npm、yarn、pnpm如何清除缓存?
前端工程化创建项目会经常使用各种安装包管理工具,安装各种前端依赖包。例如,npm、yarn、pnpm等。时间一长,各种安装包管理工具的在安装依赖时,留下的缓存文件就会变得很大,以至于影响系统的运行,因此必要时…...
![](https://img-blog.csdnimg.cn/0c032c56d74f4183addb366df1218531.png)
12款最火的AI画图软件,助你探索创新设计
ChatGPT火爆出圈,AI画图软件也如雨后春笋般流行起来。各类AI画图的软件工具横空出世,设计师与其焦虑工作会不会被人工智能取代,不如践行“工欲善其事必先利其器”,开拓思路,打开格局,好好地探索下如何利用好…...
![](https://img-blog.csdnimg.cn/img_convert/0bb07cbd10e1706a54f260b551690c47.png)
cookie信息无法获取问题研究
背景 在oneapi这个前后端都有的开源项目中,我想接入chatnextweb到oneapi的后端。 由于需要二开chatnextweb,添加登录注册功能,考虑到java后端的性能问题和内存占用,决定不重启写个服务,而是将登录注册接入到oneapi的…...
![](https://img-blog.csdnimg.cn/7d1558fb00214ff9905195b5cf02343a.png)
Linux:冯诺依曼系统和操作系统的概念
文章目录 冯诺依曼体系结构冯诺依曼体系的理解 操作系统操作系统的基本定位操作系统的理解1 操作系统的理解2总结 本篇主要总结的是操作系统的基本认知和一些概念 冯诺依曼体系结构 那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先…...
![](https://img-blog.csdnimg.cn/1a8c810a943e4bb49f07cac966d23a7d.png)
【操作系统笔记十一】进程间通信
Linux文件系统 inode 节点 (index node):给每个文件赋予一个称为 i 节点的数据结构。 inode 一开始是存储在硬盘中的,只有当文件被打开的时候,其对应的 i 节点才加载到内存中。 总结: Linux 中,…...
![](https://www.ngui.cc/images/no-images.jpg)
【操作系统】聊聊Linux软中断
什么是中断 中断是系统用来响应硬件设备请求的一种机制,会打断进程的正常调度和执行,转而去执行内核中的中断处理程序。 比如你正在看书,你女朋友叫你出去逛街。你就需要先放下手里的事情,然后逛街。回来之后,在接着看…...
![](https://img-blog.csdnimg.cn/img_convert/d55ad9d3cafd401a1c0db2ac2f108280.jpeg)
公众号迁移个人可以迁移吗?
公众号账号迁移的作用是什么?只能变更主体吗?很多小伙伴想做公众号迁移,但是不知道公众号迁移有什么作用,今天跟大家具体讲解一下。首先公众号迁移最主要的就是修改公众号的主体了,比如我们公众号原来是A公司的&#x…...
![](https://img-blog.csdnimg.cn/efebd83fb0874933bfbe7335ec13eece.png)
全国职业技能大赛云计算--高职组赛题卷⑤(容器云)
全国职业技能大赛云计算--高职组赛题卷⑤(容器云) 第二场次题目:容器云平台部署与运维任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续集成部署任务(15分)任务4 Kubernetes容器…...
![](https://img-blog.csdnimg.cn/fb97278803e04a829c1c8f2d42a789e2.jpeg)
支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答
很多投资者都知道,Renko图表和普通日本烛台都会采用相同的交易信号,即支撑位和阻力位。那么支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答。 这些信号在任何时间框架上都会出现,且在蜡烛图交易中颇受欢迎。对于Renko图表而言…...
![](https://img-blog.csdnimg.cn/1df5a790efc447db9089fd024d06f55c.png)
如何在32位MCU用printf()函数打印64位数据
1. 在32位MCU上定义64位变量: unsigned long long time_base; unsigned long long temp_time;2. 调用打印函数: printf("RFID:time_base:%d\r\n",time_base); printf("RFID:temp_time:%d\r\n",temp_time); printf("RFID:Ru…...
![](https://img-blog.csdnimg.cn/8ae5f3892b98458f8e86f9d7c8151e88.png)
Python爬虫程序设置代理常见错误代码及解决方法
Python爬虫程序设置代理是爬虫程序中常用的技巧,可以有效地绕过IP限制,提高爬虫程序的稳定性和效率。然而,在设置代理时,常会出现各种错误代码,这些错误代码可能会影响程序的正常运行,甚至导致程序崩溃。本…...
![](https://img-blog.csdnimg.cn/fc4644a0f1074940acd31630715696da.png)
3D点云目标检测:Centerformer训练waymo数据集
一、环境准备 项目地址:centerformer 1.0、基础环境 python 3.8.0 torch 1.9.1cu111 waymo-open-dataset-tf-2-6-0 1.4.9 spconv 1.2.1 其余按照requirement.txt里安装就行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt由于我本人是在…...
![](https://img-blog.csdnimg.cn/c1c0085c11754535bc7e4b12fbdf46ea.gif)
火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 自上世50年代,以“计算机”作为代表性象征的信息革命开始,社会对于先进生产力的认知便开始逐步更迭——从信息化(通常认为是把企…...
![](https://img-blog.csdnimg.cn/86ff33315c524234abaae36222d0a2fd.png)
windows上配置vscode C/C++代码跳转
windows上配置vscode C/C代码跳转 安装插件 C/C 官方的 C/C 插件,必备的插件,是代码跳转、自动补全、代码大纲显示等功能的基础。 Gtags C/C GNU Global GNU Global除了安装该插件之外,还需要在本地下载安装GNU Global工具。多看下插件…...
![](https://img-blog.csdnimg.cn/fdb20f8a4c974276959affc7a0b4d217.png)
【Xilinx】基于MPSoC的OpenAMP实现(一)
【Xilinx】基于MPSoC的OpenAMP实现(一) 一、开发环境1、开发思路2、下载官方bsp包 二、编译Linux1、配置petalinux环境变量2、创建工程3、进入目录4、设置缓存目录(重点:可离线编译,加快编译速度)5、配置u-…...
![](https://img-blog.csdnimg.cn/f964e6bd900b4143b097bcca3c73f1f8.png)
代码随想录算法训练营总结篇|完结撒花
完结撒花,真不敢相信60天坚持下来了。 算法一直是我的超级超级弱项,属于小白中的小白。一开始是想自己刷的,打开leetcode第一题,吼哟好家伙,梦开始的地方直接破碎。之前刷B站的时候就有学习up推荐算法可以看看代码随想…...
![](https://img-blog.csdnimg.cn/43fb4e80efa74318928f89145cccae16.png)
uniapp、vue实现滑动拼图验证码
uniapp、vue实现滑动拼图验证码 实际开发工作中,在登陆的时候需要短信验证码,但容易引起爬虫行为,需要用到反爬虫验证码,今天介绍一下拼图验证码,解决验证码反爬虫中的滑动验证码反爬虫。滑动拼图验证码是在滑块验证码…...
![](https://images2018.cnblogs.com/blog/1472588/201809/1472588-20180909215656439-376908446.png)
网站开发论文中期检查表/深圳网站seo哪家快
之前选择器可以完成的功能,筛选也提供了相同的函数 筛选函数介绍 eq(index|-index) 类似:eq()index:正数,从头开始获得指定所有的元素,从0算起,0表示第一个-index:负数,从尾开始获得指定索引的元素,1算…...
![](http://b.cdn.rmbz.net/rmbznet/wp-content/uploads/2015/02/20150203110934.png)
如何在360做网站SEO/网络营销岗位
转自:https://blog.csdn.net/z69183787/article/details/48933481 自从开始使用Maven管理项目,最近在配置MyBatis的Mapper,在Eclipse上调试时都是正常的,但是最近把项目迁移到 IntelliJ IDEA 上后发现不管是直接用Jetty调试&#…...
东莞樟木头网站设计/起名最好的网站排名
今天看到了一个Python库,名为markdown。瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具。 我的实验环境 操作系统: Windows 7 64位 旗舰版Python版本: 2.7.11IDE: PyCharm pro 2016.1所需…...
![](/images/no-images.jpg)
改变网站字体/百度空间登录
Lucene的概述: Lucene(发音为 [lusen] )是一个非常优秀的开源的全文搜索引擎,我们可以在它的上面开发出各种全文搜索的应用来。Lucene在国外有很高的知名度,现在已经是Apache的顶级项目,在国内,Lucene的应用也越来越多。 Lucene的…...
![](/images/no-images.jpg)
内江规划建设教育培训中心网站/推广方式和推广渠道
Open中自定义IP地址分配有两种实现方式,一种是写一个plugin,plugin_call这个调用可以被添加到任何地方,Open中的plugin挂载点也可在任意位置定义,因此利用plugin来自定义IP地址分配策略就有两种方式,第一种方式是可以新…...
![](/images/no-images.jpg)
网站建设要注意/网络营销和网络推广
上一篇讲到游戏运作的原理是非常简单的,实现一个五子棋很可能只需要使用操作系统提供的原生开发环境,简单的做一些代码实现即可完成,我自己在大学的时候就找到了一个一步一步教你使用Windows API开发一个五子棋游戏的教程,需要用到的也只需要安装一个visual studio顺便安装…...