QT-day4

news/2025/2/12 9:09:11/

画一个时钟

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(30,-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(75,-100));painter.restore();painter.save();//秒针painter.rotate(6.0*time.second());painter.drawLine(QPoint(0,0),QPoint(150,-100));}void Widget::update_slot()
{update();
}

测试结果

思维导图


http://www.ppmy.cn/news/1117735.html

相关文章

使用Arduino简单测试HC-08蓝牙模块

目录 模块简介模块测试接线代码测试现象 总结 模块简介 HC-08 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V4.0 BLE 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM&#xff0c;调制方式是 GFSK。模块最大发射功率为4dBm&#xff0c;接收灵度-93dBm&#xff0c…

【滑动窗口】LCR 016. 无重复字符的最长子串

LCR 016. 无重复字符的最长子串 解题思路 窗口内的字符串就是不重复子串每次遇到新的字符 看看窗口内是否存在该字符 如果存在直接剔除 然后调整窗口左边界不存在 添加窗口内部 右边界 class Solution {public int lengthOfLongestSubstring(String s) {if(s.length() < …

python项目2to3方案预研

目录 官方工具2to3工具安装参数解释基本使用工具缺陷 future工具安装参数解释基本使用工具缺陷 python-modernize工具安装参数解释基本使用工具缺陷 pyupgrade工具安装参数解释基本使用工具缺陷 对比 官方工具2to3 2to3 是Python官方提供的用于将Python 2代码转换为Python 3代…

抗锯齿的线

抗锯齿的线 右下角的时候h是0,到顶部 h是1&#xff0c;然后中间y相距4个像素&#xff0c;那dy就是0.25 如果让h abs(fract(h - 0.5) - 0.5) 中间一行0.5&#xff0c;第一行 第三行都是0.25&#xff0c;两端都是0 根据插值来看 这里是 如果用h/dy 那么第一行以上&#xff0…

【23种设计模式】建造者模式【⭐⭐⭐】

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

记录selenium和chrome使用socks代理打开网页以及查看selenium的版本

使用前&#xff0c;首先打开socks5全局代理。 之前我还写过一篇关于编程中使用到代理的情况&#xff1a; 记录一下python编程中需要使用代理的解决方法_python 使用全局代理_小小爬虾的博客-CSDN博客 在本文中&#xff0c;首先安装selenium和安装chrome浏览器。 参考我的文章…

机器学习第九课--随机森林

一.什么是集成模型 对于几乎所有的分类问题(图像识别除外&#xff0c;因为对于图像识别问题&#xff0c;目前深度学习是标配)&#xff0c;集成模型很多时候是我们的首选。比如构建一个评分卡系统&#xff0c;业界的标配是GBDT或者XGBoost等集成模型&#xff0c;主要因为它的效…

电脑出现找不到msvcp120.dll无法继续执行代码,不用担心多种方法帮你搞定

今天&#xff0c;我想和大家分享的文章是“msvcp120.dll丢失的修复方法”。我相信&#xff0c;对于我们很多人来说&#xff0c;电脑是我们学习、娱乐的重要工具&#xff0c;而当电脑出现问题时&#xff0c;我们往往束手无策。因此&#xff0c;我希望通过今天的文章&#xff0c;…