QT-day4

画一个时钟

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPaintEvent>
#include <QDebug>
#include <QPainter>
#include <QTimer>
#include <QTime>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;public slots:void update_slot();private:Ui::Widget *ui;QTimer *timer;
};
#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 = new QTimer(this);connect(timer,&QTimer::timeout,this,&Widget::update_slot);timer->start(1000);
}Widget::~Widget()
{delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QPen pen;pen.setColor(QColor("skyblue"));pen.setStyle(Qt::SolidLine);pen.setWidth(3);painter.setPen(pen);//给画家偏移起始坐标点painter.translate(this->width()/2,this->height()/2);//给画家偏移坐标系painter.rotate(0); //旋转坐标系painter.setBrush(QBrush(QColor("pink"))); //给画家设置画刷//画个圆painter.drawEllipse(QPoint(0,0),200,200);painter.setBrush(QBrush(QColor("black")));painter.drawEllipse(QPoint(0,0),10,10);//获取系统当前时间QTime time = QTime::currentTime();pen.setColor(QColor("black"));pen.setStyle(Qt::SolidLine);painter.setPen(pen);for(int i=0;i<12;i++){painter.drawLine(QPoint(0,-190),QPoint(0,-200));painter.rotate(360/12);}painter.setFont(QFont("宋体", 20, 5));painter.setPen(pen);for(int i=12;i>=1;i--){painter.drawText(QPoint(-15,-160),QString::number(i));painter.rotate(-360/12);}pen.setWidth(1);painter.setPen(pen);for(int i=0;i<60;i++){painter.drawLine(QPoint(0,-195),QPoint(0,-200));painter.rotate(360/60);}painter.save();pen.setWidth(6);painter.setPen(pen);//时针painter.rotate(30.0*(time.hour()+(time.minute()+time.second()/60)/60));painter.drawLine(QPoint(0,0),QPoint(0,-75));painter.restore();painter.save();pen.setWidth(5);painter.setPen(pen);//分针painter.rotate(6.0*(time.minute()+time.second()/60));painter.drawLine(QPoint(0,0),QPoint(0,-100));painter.restore();painter.save();//秒针painter.rotate(6.0*time.second());painter.drawLine(QPoint(0,0),QPoint(0,-100));}void Widget::update_slot()
{update();
}

测试结果

思维导图

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

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

相关文章

Linux chmod命令——修改权限信息

我们可以使用chmod命令&#xff0c;修改文件、文件夹的权限信息。注意&#xff0c;只有文件、文件夹的所属用户或root用户可以修改。 chmod [-R] 权限 文件或文件夹 -R&#xff0c;对文件夹内的全部内容应用同样的操作 例如&#xff1a; chmod urwx,grx,ox hello.txt &…

100道JVM面试题大全最新版2023版

100道与JVM相关的面试题&#xff0c;包括JVM基本概念、内存管理、垃圾回收、性能调优、JVM内存模型、JVM是什么意思、JVM调优、JVM垃圾回收机制、JVM类加载机制、JVM原理。 1. 什么是JVM&#xff08;Java虚拟机&#xff09;&#xff1f; JVM&#xff08;Java Virtual Machine…

Kafka 笔记 (Non-Root/Container)

目录 1. Kafka 笔记 (Non-Root/Container)1.1. 启动1.2. bitnami/kafka1.2.1. Non-Root Containers 1. Kafka 笔记 (Non-Root/Container) 1.1. 启动 Kafka 需要与 ZooKeeper 一起启动: Kafka with ZooKeeper Run the following commands in order to start all services in…

LeetCode_贪心算法_简单_605.种花问题

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 假设有一个很长的花坛&#xff0c;一部分地块种植了花&#xff0c;另一部分却没有。可是&#xff0c;花不能种植在相邻的地块上&#xff0c;它们会争夺水源&#xff0c;两者都会死去。给你一个整数数组 flowe…

机器学习 day35(决策树)

决策树 上图的数据集是一个特征值X采用分类值&#xff0c;即只取几个离散值&#xff0c;同时也是一个二元分类任务&#xff0c;即标签Y只有两个值 上图为之前数据集对应的决策树&#xff0c;最顶层的节点称为根节点&#xff0c;椭圆形节点称为决策节点&#xff0c;矩形节点称…

PythonWeb服务器(HTTP协议)

一、HTTP协议与实现原理 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种用于在网络上传输超文本数据的协议。它是Web应用程序通信的基础&#xff0c;通过客户端和服务器之间的请求和响应来传输数据。在HTTP协议中连接客户与服务器的…

Shel简介入门

Shell编程: 1.了解入门 2.变量 变量子串知识 3.特殊位置变量 4.脚本的执行方式 5.脚本传参 6.数值运算 7.数值比较 8.字符串比较 9.正则比较方式 10.条件控制语句 if while for case break continue exit 11.数组 12.案例 一. Shell介绍 Shell的作用 系统…

计算机视觉: 三维物体生成

三维物体生成与编辑 论文地址: Controllable Mesh Generation Through Sparse Latent Point Diffusion Models 背景 数据是目前数字化和AI领域最宝贵的财富之一&#xff0c;但是对于目前的开发者来说&#xff0c;收集数据都意味着极大的成本。所以建立一个高效的生成模型能极…

关于亚马逊云科技云技能学习

云计算作为当今信息技术领域的热门话题&#xff0c;正以其强大的计算和存储能力&#xff0c;灵活性和可扩展性&#xff0c;逐渐改变着人们的工作方式和生活方式。而其中的一家龙头企业——亚马逊云科技&#xff08;Amazon Web Services&#xff0c;AWS&#xff09;&#xff0c;…

用Bosch Sensortec的BMI08X传感器API在C语言中控制IMU传感器:一个完整的集成指南

介绍 在现代的硬件开发领域&#xff0c;惯性测量单元(IMU)已经成为了一个关键的组件&#xff0c;尤其在运动追踪和定位应用中。Bosch Sensortec 的 BMI08X 是其中的一种高度受欢迎的IMU系列传感器。为了更简单、更快速地在C语言项目中集成和使用这些传感器&#xff0c;Bosch S…

数据结构-----堆(完全二叉树)

目录 前言 一.堆 1.堆的概念 2.堆的存储方式 二.堆的操作方法 1.堆的结构体表示 2.数字交换接口函数 3.向上调整&#xff08;难点&#xff09; 4.向下调整&#xff08;难点&#xff09; 5.创建堆 6.堆的插入 7.判断空 8.堆的删除 9.获取堆的根(顶)元素 10.堆的遍历…

如何看待Unity新的收费模式?

文章目录 背景Unity的论点开发者的担忧如何看待Unity新的收费模式&#xff1f;1. 理解Unity的立场2. 考虑小型开发者3. 探索替代方案4. 对市场变化保持敏感5. 提高游戏质量 结论 &#x1f389; 如何看待Unity新的收费模式&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1…

Jenkins “Trigger/call builds on other project“用法及携带参数

1.功能 “Trigger/call builds on other project” 功能是 Jenkins 中的一个特性&#xff0c;允许您在某个项目的构建过程中触发或调用另一个项目的构建。 当您在 Jenkins 中启用了 “Trigger/call builds on other project” 功能并配置了相应的触发条件后&#xff0c;当主项…

计算机视觉与深度学习-循环神经网络与注意力机制-Attention(注意力机制)-【北邮鲁鹏】

目录 引出Attention定义Attention-based model通俗解释应用在图像领域图像字幕生成&#xff08;image caption generation&#xff09;视频处理 序列到序列学习&#xff1a;输入和输出都是长度不同的序列 引出Attention 传统的机器翻译是&#xff0c;将“机器学习”四个字都学…

软件工程开发模式:从传统到现代的演进

引言 软件工程开发模式是指导软件开发过程的重要框架&#xff0c;旨在提高软件开发的效率和质量。随着技术的不断进步&#xff0c;软件工程开发模式也在不断发展演变&#xff0c;以适应不同的项目需求和开发环境。本文将介绍传统软件工程开发模式和现代敏捷、精益和DevOps软件…

华为OD机试真题-会议接待-2023年OD统一考试(B卷)

题目描述: 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 1、一个团只能上一辆车,并且代表团人数(代表团数量小于30,每个代表团人数小于30)小于…

八大排序(二)快速排序

一、快速排序的思想 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右…

【新版】系统架构设计师 - 案例分析 - 软件工程

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 结构化分析SA数据流图DFD数据流图平衡原则答题技巧例题1例题2 面向对象的分析OOA用例图用例模型细化用例描述用例关系【包含、扩展、泛化】分析模型定义概念类确定类之间的关系类图与对象图实体类 - 存储…

【音视频】MP4封装格式

基本概念 使用MP4box.js查看MP4内部组成结构 整体结构 数据索引&#xff08;moov&#xff09;数据流包&#xff08;mdat&#xff09; 各个包的位置&#xff0c;大小&#xff0c;信息&#xff0c;时间戳&#xff0c;编码方式等全在数据索引 数据流包只有纯二进制码流数据 数据…

C++ - 红黑树 介绍 和 实现

前言 前面 学习了 AVL树&#xff0c;AVL树虽然在 查找方面始终拥有 O(log N &#xff09;的极高效率&#xff0c;但是&#xff0c;AVL 树在插入 ,删除等等 修改的操作当中非常的麻烦&#xff0c;尤其是 删除操作&#xff0c;在实现当中细节非常多&#xff0c;在实现上非常难掌控…