• 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、思维导图

  • 相关阅读:
    Linux 启动管理
    ASP.NET程序设计 ——琴社网站
    Git的常见操作
    视频号小店所需资金明细,2023最新费用详解!
    再探数据结构
    unity图片`fillAmount`填充方法
    11.13 训练周记
    2024.06.20 刷题日记
    C语言入门(四):有关逻辑的运算符和表达式
    【CNN-GRU预测】基于卷积神经网络-门控循环单元的单维时间序列预测研究(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/Lychee_z23/article/details/133101806