• QT DAY 4


     时钟:

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. int hour=0;
    4. int min=0;
    5. int sec=0;
    6. int count=0;
    7. Widget::Widget(QWidget *parent)
    8. : QWidget(parent)
    9. , ui(new Ui::Widget)
    10. {
    11. ui->setupUi(this);
    12. this->setFixedSize(800,600);
    13. timer = new QTimer;
    14. timer->start(1000);
    15. //int count =0 ;
    16. connect(timer, &QTimer::timeout,[&](){
    17. count++;
    18. update();
    19. });
    20. //调用QTime的静态成员函数获取当前系统时间
    21. QTime sys_time = QTime::currentTime();
    22. //获取时分秒
    23. hour = sys_time.hour();
    24. min = sys_time.minute();
    25. sec=sys_time.second();
    26. //将时间类对象调用函数转化为字符串
    27. QString t =sys_time.toString("hh:mm:ss");
    28. }
    29. Widget::~Widget()
    30. {
    31. delete ui;
    32. }
    33. void Widget::paintEvent(QPaintEvent *event)
    34. {
    35. //定义画家
    36. QPainter p(this);
    37. QPen pen(QColor("black"));
    38. pen.setWidth(3);
    39. QBrush b("white");
    40. p.setPen(pen);
    41. p.setBrush(b);
    42. p.translate(this->width()/2,this->height()/2);
    43. p.drawEllipse(QPoint(0,0),200,200);
    44. //使用画家绘制
    45. pen.setColor(QColor("black"));
    46. p.setPen(pen);
    47. for(int i=0;i<60;i++)
    48. {
    49. p.rotate(6);
    50. p.drawLine(QPoint(200,0),QPoint(195,0));
    51. }
    52. pen.setWidth(5);
    53. p.setPen(pen);
    54. for(int i=0;i<12;i++)
    55. {
    56. p.drawLine(QPoint(200,0),QPoint(190,0));
    57. p.rotate(30);
    58. p.drawText(QPoint(0,-170),QString("%1").arg(i+1));
    59. }
    60. //指针时针
    61. pen.setWidth(10);
    62. pen.setColor(QColor("red"));
    63. p.setPen(pen);
    64. p.rotate(hour*30+6*sec/60/12+30*min/60+6*count/6/12);
    65. p.drawLine(QPoint(0,-60),QPoint(0,5));
    66. //指针分针
    67. QPainter p1(this);
    68. p1.translate(this->width()/2,this->height()/2);
    69. pen.setWidth(8);
    70. pen.setColor(QColor("green"));
    71. p1.setPen(pen);
    72. p1.rotate(6*count/60+min*6+6*sec/60);
    73. p1.drawLine(QPoint(0,-100),QPoint(0,8));
    74. //指针秒针
    75. QPainter p2(this);
    76. p2.translate(this->width()/2,this->height()/2);
    77. pen.setWidth(6);
    78. pen.setColor(QColor("yellow"));
    79. p2.setPen(pen);
    80. p2.rotate(6*count+6*sec*6);
    81. p2.drawLine(QPoint(0,-150),QPoint(0,12));
    82. }

     

    time

    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. speecher = new QTextToSpeech(this);
    9. //实例化一个定时器
    10. timer = new QTimer(this);
    11. connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);
    12. timer->start(1000);//1秒
    13. ui->evenB->setEnabled(false);
    14. }
    15. Widget::~Widget()
    16. {
    17. delete ui;
    18. }
    19. //基于属性的按钮对应的槽函数
    20. void Widget::on_objB_clicked()
    21. {
    22. ui->evenB->setEnabled(true);
    23. ui->objB->setEnabled(false);
    24. ui->evenL->setEnabled(false);
    25. ui->textEdit->setEnabled(false);
    26. }
    27. //处理timeout信号对应的函数
    28. void Widget::timeout_slot()
    29. {
    30. //调用QTime的静态成员函数获取当前系统时间
    31. QTime sys_time = QTime::currentTime();
    32. //获取时分秒
    33. // int hour = sys_time.hour();
    34. // int min = sys_time.minute();
    35. // int sec=sys_time.second();
    36. //将时间类对象调用函数转化为字符串
    37. QString t =sys_time.toString("hh:mm:ss");
    38. ui->objL->setText(t);
    39. ui->objL->setAlignment(Qt::AlignCenter);
    40. ui->objL->setFont(QFont("楷体",20));
    41. if(!ui->objB->isEnabled())
    42. {
    43. if(ui->objL->text()==ui->evenL->text())
    44. {
    45. ui->evenL->setText("");
    46. ui->objB->setEnabled(true);
    47. ui->evenL->setEnabled(true);
    48. ui->evenB->setEnabled(false);
    49. ui->textEdit->setEnabled(true);
    50. QString text = ui->textEdit->toPlainText();
    51. speecher->say(text);
    52. }
    53. }
    54. }
    55. void Widget::on_evenB_clicked()
    56. {
    57. ui->objB->setEnabled(true);
    58. ui->evenL->setEnabled(true);
    59. ui->evenB->setEnabled(false);
    60. ui->textEdit->setEnabled(true);
    61. }
    62. //定时器事件处理函数的实现
    63. void Widget::timerEvent(QTimerEvent *event)
    64. {
    65. }

  • 相关阅读:
    服务器中间件的种类和日常使用
    深入解析 Azure 机器学习平台:架构与组成部分
    Redis数据类型-需求实战记录
    代码随想录算法训练营第五十五天丨 动态规划part16
    包gopkg.in/ini.v1在 Go 中提供 INI 文件读取和写入功能
    22-08-26 西安 MySQL高级(04)索引失效、关联查询优化、排序分组优化、千万级数据分页的优化、Innodb的行锁
    基于SSH的酒店管理系统
    Unity 使用技巧与常见问题
    Hive客户端hive与beeline的区别
    想要精通算法和SQL的成长之路 - 课程表II
  • 原文地址:https://blog.csdn.net/zycyydssss/article/details/132641452