• day51: QTday4,绘制事件、QT连接TCP网络通信


    一、绘制时钟

    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. #include
    11. QT_BEGIN_NAMESPACE
    12. namespace Ui { class Widget; }
    13. QT_END_NAMESPACE
    14. class Widget : public QWidget
    15. {
    16. Q_OBJECT
    17. public:
    18. Widget(QWidget *parent = nullptr);
    19. ~Widget();
    20. void paintEvent(QPaintEvent *event) override;
    21. // void timerEvent(QTimerEvent *e) override;
    22. public slots:
    23. void timer_slot();
    24. private:
    25. Ui::Widget *ui;
    26. // int timer_id; //定义一个定时器id
    27. QTimer * timer;
    28. int hour;
    29. int minute;
    30. int second;
    31. QLabel *label;
    32. };
    33. #endif // WIDGET_H

    widget.cpp:

    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. timer = new QTimer(this);
    9. timer->start(1000);
    10. connect(timer,&QTimer::timeout,this,&Widget::timer_slot);
    11. }
    12. Widget::~Widget()
    13. {
    14. delete ui;
    15. }
    16. void Widget::paintEvent(QPaintEvent *event)
    17. {
    18. //QRectF rectangle(this->width()/2-200,this->height()/2-200,400,400);
    19. QPainter painter(this);
    20. painter.setRenderHint(QPainter::Antialiasing);
    21. //painter.drawEllipse(rectangle);
    22. QPen pen;
    23. pen.setStyle(Qt::SolidLine);
    24. pen.setColor(QColor("Black"));
    25. pen.setWidth(5);
    26. painter.setPen(pen);
    27. painter.translate(this->width()/2,this->height()/2);
    28. painter.drawEllipse(QPoint(0,0),250,250);
    29. int i=12;
    30. while(i--)
    31. {
    32. painter.rotate(30);
    33. painter.drawLine(0,220,0,250);
    34. }
    35. int j=60;
    36. while(j--)
    37. {
    38. painter.rotate(6);
    39. painter.drawLine(0,240,0,250);
    40. }
    41. painter.rotate(180);
    42. painter.save();
    43. pen.setWidth(8);
    44. pen.setColor(QColor("red"));
    45. painter.setPen(pen);
    46. painter.rotate(30*hour+0.5*minute+0.5/60*second);
    47. painter.drawLine(0,0,0,50);
    48. painter.restore();
    49. painter.save();
    50. pen.setWidth(5);
    51. pen.setColor(QColor("blue"));
    52. painter.setPen(pen);
    53. painter.rotate(6*minute+0.1*second);
    54. painter.drawLine(0,0,0,90);
    55. painter.restore();
    56. painter.save();
    57. pen.setWidth(1);
    58. pen.setColor(QColor("green"));
    59. painter.setPen(pen);
    60. painter.rotate(6*second);
    61. painter.drawLine(0,0,0,150);
    62. painter.restore();
    63. }
    64. void Widget::timer_slot()
    65. {
    66. /*
    67. this->label->resize(200,100);
    68. this->label->move(this->width()-100,this->height()+150);
    69. */
    70. QTime sys_t = QTime::currentTime(); //获得系统时间
    71. this->hour=sys_t.hour();
    72. this->minute=sys_t.minute();
    73. this->second=sys_t.second();
    74. update();
    75. /*
    76. //将QTime类对象转换为字符串
    77. QString t1 = sys_t.toString("hh:mm:ss");
    78. //展示
    79. this->label->setText(t1);
    80. */
    81. }

    main.cpp:

    1. #include "widget.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Widget w;
    7. w.show();
    8. return a.exec();
    9. }

  • 相关阅读:
    第四十二天&jmeter组件讲解
    凉鞋的 Godot 笔记 106. 第二轮循环&2D 场景视图&Label
    docker的安装以及docker中nginx配置
    springboot+社区疫苗管理系统 毕业设计-附源码191705
    TypeScript 第三章:类 class
    Apache Paimon系列之:认识Paimon
    Linux修改远程登陆端口
    STL应用 —— deque
    汽车电子行业常见工具方法汇总
    Java——线程&进程
  • 原文地址:https://blog.csdn.net/wxmchong/article/details/133104719