• QT实现钟表


    1、

    头文件

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. #include //绘制事件类
    5. #include //信息调试类
    6. #include //画家类
    7. #include //定时器事件处理类
    8. #include
    9. #include //定时器类
    10. #include //日期时间类
    11. QT_BEGIN_NAMESPACE
    12. namespace Ui { class MainWindow; }
    13. QT_END_NAMESPACE
    14. class MainWindow : public QMainWindow
    15. {
    16. Q_OBJECT
    17. public:
    18. MainWindow(QWidget *parent = nullptr);
    19. ~MainWindow();
    20. //重写绘制事件处理函数
    21. void paintEvent(QPaintEvent *event) override;
    22. private:
    23. Ui::MainWindow *ui;
    24. //定义一个定时器的对象指针
    25. QTimer *timer;
    26. };
    27. #endif // MAINWINDOW_H
    源文件
    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. MainWindow::MainWindow(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MainWindow)
    6. {
    7. ui->setupUi(this);
    8. //给定时器指针实例化对象
    9. timer = new QTimer(this);
    10. timer->start(1000); //一秒钟
    11. //将该定时器的timeout信号连接到自定义槽函数中
    12. connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    13. }
    14. MainWindow::~MainWindow()
    15. {
    16. delete ui;
    17. }
    18. void MainWindow::paintEvent(QPaintEvent *event)
    19. {
    20. //实例化一个画家
    21. QPainter painter(this);
    22. //实例化一个画笔
    23. QPen pen;
    24. pen.setColor(QColor("black")); //将画笔设置成黑色
    25. pen.setStyle(Qt::SolidLine); //设置线型
    26. pen.setWidth(5); //设置画笔的粗细
    27. //将画笔给画家安排上
    28. painter.setPen(pen);
    29. //给画家偏移起始坐标点
    30. painter.translate(this->width()/2,this->height()/2); //界面的一半
    31. //给画家偏移坐标系
    32. painter.rotate(0); //也就是旋转
    33. //填充图形内的颜色(刷子)
    34. painter.setBrush(QBrush(QColor("skyblue")));
    35. //画个圆形
    36. painter.drawEllipse(QPoint(0,0), 200,200); //QPoint(0,0)为起始位置
    37. //画出表盘
    38. for(int i=1;i<=60;i++)
    39. {
    40. painter.rotate(6);
    41. painter.drawLine(0,195,0,200);
    42. }
    43. //painter.rotate(0);
    44. for(int i=1;i<=12;i++)
    45. {
    46. painter.rotate(30);
    47. painter.drawLine(0,190,0,200);
    48. }
    49. QTime sys_t = QTime::currentTime();
    50. //时针
    51. painter.save(); //保存
    52. pen.setColor(QColor("green")); //将画笔设置成绿色
    53. painter.setPen(pen);
    54. painter.rotate(6*sys_t.second());
    55. painter.drawLine(0,0,0,150);
    56. //分针
    57. painter.restore();
    58. painter.save();
    59. pen.setColor(QColor("blue")); //将画笔设置成蓝色
    60. painter.setPen(pen);
    61. painter.rotate(6*(sys_t.minute()+sys_t.second()/60));
    62. painter.drawLine(0,0,0,120);
    63. //秒针
    64. painter.restore();
    65. painter.save();
    66. pen.setColor(QColor("red")); //将画笔设置成红色
    67. painter.setPen(pen);
    68. painter.rotate(30*((sys_t.hour()+sys_t.minute()/60)));
    69. painter.drawLine(0,0,0,90);
    70. }
    主函数
    1. #include "mainwindow.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. MainWindow w;
    7. w.show();
    8. return a.exec();
    9. }

    2、思维导图

  • 相关阅读:
    手机上玩.NET的两种方式
    解锁智慧照明新玩法,Construlita携手涂鸦智能打造创新方案!
    Knife4j使用教程(五)-- 上传gitee,由Maven管理的SpringBoot项目
    等保评测是什么意思
    约瑟夫环问题
    rust字符串
    Suc-Ala-Ala-Pro-Asp-pNA,CAS号: 165174-58-3
    竞赛 python的搜索引擎系统设计与实现
    简述raft算法
    基于多目标优化算法的 LCOE电力成本的敏感性分析(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/Venusler/article/details/133109845