• Cpp/Qt-day040920Qt


    目录

    时钟

    头文件:Widget.h:

    源文件:Widget.c:

    效果图:

    思维导图


    时钟
    头文件:Widget.h:
    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. QT_BEGIN_NAMESPACE
    11. namespace Ui { class Widget; }
    12. QT_END_NAMESPACE
    13. class Widget : public QWidget
    14. {
    15. Q_OBJECT
    16. public:
    17. Widget(QWidget *parent = nullptr);
    18. ~Widget();
    19. void timerEvent(QTimerEvent *e) override;
    20. void paintEvent(QPaintEvent *event) override;
    21. private:
    22. Ui::Widget *ui;
    23. //定义一个定时器
    24. int timerId;
    25. };
    26. #endif // WIDGET_H
    源文件:Widget.c:
    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. timerId = startTimer(1000);
    9. }
    10. Widget::~Widget()
    11. {
    12. delete ui;
    13. }
    14. void Widget::timerEvent(QTimerEvent *e)
    15. {
    16. this->update();
    17. }
    18. void Widget::paintEvent(QPaintEvent *event){
    19. //实例化一个画家
    20. QPainter Panter(this);
    21. //实例化一支画笔
    22. QPen pen;
    23. //设置画笔线形为实线
    24. pen.setStyle(Qt::SolidLine);
    25. //设置画笔宽度为5
    26. pen.setWidth(5);
    27. //设置画笔颜色为红色
    28. pen.setColor(QColor("red"));
    29. //把画笔给画家安排上
    30. Panter.setPen(pen);
    31. //将基准坐标系设为界面正中心
    32. Panter.translate(QPoint(this->width()/2,this->height()/2));
    33. //给画家设置画刷,给钟添加底色
    34. Panter.setBrush(QBrush(QColor(188, 75, 126), Qt::Dense1Pattern));
    35. //画出一个半径为200的圆,作为时钟的框架
    36. Panter.drawEllipse(QPoint(0, 0), 200, 200);
    37. for(int i=0; i<60; i++){
    38. //每6度画一个小竖杠
    39. Panter.rotate(6);
    40. pen.setColor(QColor("black"));
    41. pen.setWidth(3);
    42. Panter.setPen(pen);
    43. Panter.drawLine(QPoint(0, 192),QPoint(0,200));
    44. }
    45. for(int i=1; i<=12; i++){
    46. //每30度画一个大竖杠
    47. Panter.rotate(30);
    48. pen.setColor(QColor("black"));
    49. pen.setWidth(3);
    50. Panter.setPen(pen);
    51. Panter.drawLine(QPoint(0, 186),QPoint(0,200));
    52. }
    53. Panter.rotate(212);
    54. for(int i=1; i<=12; i++){
    55. //每30度写上文字
    56. Panter.translate(0,184);
    57. pen.setColor(QColor("black"));
    58. pen.setWidth(20);
    59. Panter.setPen(pen);
    60. //设置文本
    61. QString text = QString::number(i);
    62. Panter.drawText(QPointF(0,0),text);
    63. Panter.translate(0,-184);
    64. Panter.rotate(30);
    65. }
    66. Panter.rotate(-32+180);
    67. QTime time = QTime::currentTime();
    68. int h = time.hour();
    69. int m = time.minute();
    70. int s = time.second();
    71. QPainter painterH(this);
    72. //设置画笔线形为实线
    73. pen.setStyle(Qt::SolidLine);
    74. //设置画笔宽度为5
    75. pen.setWidth(5);
    76. //设置画笔颜色为黑色
    77. pen.setColor(QColor("black"));
    78. painterH.setPen(pen);
    79. QPainter painterM(this);
    80. painterM.setPen(pen);
    81. QPainter painterS(this);
    82. painterS.setPen(pen);
    83. //将基准坐标系设为界面正中心
    84. painterH.translate(QPoint(this->width()/2,this->height()/2));
    85. painterH.rotate((h*3600+m*60+s)/120+180);
    86. painterM.translate(QPoint(this->width()/2,this->height()/2));
    87. painterM.rotate((m*60+s)/10+180);
    88. painterS.translate(QPoint(this->width()/2,this->height()/2));
    89. painterS.rotate(s*6+180);
    90. painterH.drawLine(0,0, 0,150);
    91. painterH.save();
    92. painterM.drawLine(0,0, 0,120);
    93. painterM.save();
    94. painterS.drawLine(0,0, 0,90);
    95. painterH.save();
    96. qDebug()<":"<":"<
    97. }
    效果图:

    思维导图

  • 相关阅读:
    Java基础----多线程
    全国各个省份市区县明细数据
    Hadoop生态系统(HDFS、ZooKeeper、MapRuduce、Pig....)
    Java Elasticsearch 按一定时间间隔(timeInterval)循环查询数据
    LeetCode448:找到所有数组中消失的数字
    Zookeeper (四) --------- 服务器动态上下线监听案例
    Chapter8_FundamentalsOfComputerGraphic
    Hadoop(HDFS)
    IPQ9554 with QCN6274 Solution for Commercial Applications|Wi-Fi 7
    Python 交易指南:利用 RSI
  • 原文地址:https://blog.csdn.net/sy311SB/article/details/133102558