码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt-day4


    1、时钟

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. //给定时器指针实例化对象
    9. timer = new QTimer(this);
    10. //将该定时器的timeout信号连接到自定义槽函数中
    11. connect(timer, &QTimer::timeout, this, &Widget::timeout_slot);
    12. }
    13. Widget::~Widget()
    14. {
    15. delete ui;
    16. }
    17. //绘制事件处理函数的定义
    18. void Widget::paintEvent(QPaintEvent *event)
    19. {
    20. //实例化一个画家
    21. QPainter painter(this);
    22. //获取当前时间
    23. QTime Time = QTime::currentTime();
    24. //实例化一个画笔
    25. QPen pen;
    26. pen.setColor(QColor("hotpink")); //表盘外框颜色
    27. pen.setStyle(Qt::SolidLine); //设置线型:实线
    28. pen.setWidth(4); //线的粗细
    29. //将画笔给画家安排上
    30. painter.setPen(pen);
    31. //给画家偏移起始坐标点
    32. painter.translate(this->width()/2, this->height()/2);
    33. //给画家安排画刷
    34. painter.setBrush(QBrush(QColor("grey")));
    35. //画个圆形(时钟
    36. painter.drawEllipse(QPoint(0,0), 160, 160);
    37. //刻度
    38. for(int i=0; i<60; i++)
    39. {
    40. painter.drawLine(160,0,154,0);
    41. painter.rotate(6);
    42. }
    43. painter.setFont(QFont("隶书",14));
    44. //小时
    45. for(int i=1; i<=12; i++)
    46. {
    47. painter.rotate(30);
    48. painter.drawLine(0, -160, 0, -145);
    49. painter.drawText(-10, -125, QString("%1").arg(i));
    50. }
    51. painter.save();
    52. int hour = Time.hour(); // 获取当前的小时
    53. int minute = Time.minute(); // 获取当前的分钟
    54. double hourAngle = (hour%12 + minute/60.0)*30.0; // 计算时针的角度
    55. painter.rotate(hourAngle); // 旋转坐标系,使时针指向正确的位置
    56. QPen pen1;
    57. pen1.setColor(QColor("darkred")); //设置时针颜色
    58. pen1.setStyle(Qt::SolidLine); //实线
    59. pen1.setWidth(6);
    60. //将画笔给画家安排上
    61. painter.setPen(pen1);
    62. //画一条直线
    63. painter.drawLine(0, 0, 0, 80);
    64. painter.save();
    65. //绘制分针
    66. double minuteAngle = minute*6.0;
    67. painter.rotate(minuteAngle);
    68. QPen pen2;
    69. pen2.setColor(QColor("lightpink")); //设置时针颜色
    70. pen2.setStyle(Qt::SolidLine); //实线
    71. pen2.setWidth(4);
    72. //将画笔给画家安排上
    73. painter.setPen(pen2);
    74. painter.drawLine(0, 0, 0, 110);
    75. painter.save();
    76. //绘制秒针
    77. int second = Time.second();
    78. double secondAngle = second * 6.0;
    79. painter.rotate(secondAngle);
    80. QPen pen3;
    81. pen3.setColor(QColor("inen")); //设置时针颜色
    82. pen3.setStyle(Qt::SolidLine); //实线
    83. pen3.setWidth(2);
    84. //将画笔给画家安排上
    85. painter.setPen(pen3);
    86. painter.drawLine(0, 0, 0, 140);
    87. painter.restore();
    88. }
    89. void Widget::timeout_slot()
    90. {
    91. update();
    92. }

    ui界面:

    2、思维导图

  • 相关阅读:
    TV焦点实战总结
    远程重启电脑
    Linux学习第21天:Linux内核定时器驱动开发: 流淌的时间长河
    JavaScript 数据结构与算法2(队列和双端队列)
    三分钟搭建一个自己的 ChatGPT (从开发到上线)
    推荐系统笔记(十二):常用激活函数gelu、swish等
    前端实现将内容复制到剪切板的实现方法(个人项目使用)
    java家教平台系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    Android 10 中的隐私权变更
    【vue3-element-admin】基于 Vue3 + Vite4 + TypeScript + Element-Plus 从0到1搭建后台管理系统(前后端开源@有来开源组织)
  • 原文地址:https://blog.csdn.net/Lychee_z23/article/details/133101806
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号