目录

  • 头文件
  • 源代码
  • 运行结果

头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H#include <QWidget>#include <QPaintEvent>
#include <QDebug>#include <QPainter>     //画家类#include <QTime>    //时间类,显示时间使用
#include <QTimer>#include <QMouseEvent>QT_BEGIN_NAMESPACE
namespace Ui { class myWidget; }
QT_END_NAMESPACEclass myWidget : public QWidget
{Q_OBJECTpublic:myWidget(QWidget *parent = nullptr);~myWidget();//重写绘制事件处理函数【函数声明】void paintEvent(QPaintEvent *event) override;private:Ui::myWidget *ui;//重定义鼠标按下时间,按下时,显示表盘指针【获取当前时间】void mousePressEvent(QMouseEvent *event) override;//定义一个整型变量【事件处理参数】【输出标签时使用】int t_id;//重写定时器事件处理函数void timerEvent(QTimerEvent *event) override;//定义一个定时器指针【计算初始时间时使用】QTimer *t;};
#endif // MYWIDGET_H

源代码

#include "mywidget.h"
#include "ui_mywidget.h"myWidget::myWidget(QWidget *parent): QWidget(parent), ui(new Ui::myWidget)
{ui->setupUi(this);
}myWidget::~myWidget()
{delete ui;//给定时器实例化对象空间【对象版】t = new QTimer(this);t->start(1000); //启动定时器,自动发射一个timeout信号,将此信号连接自定义的槽函数,每隔一定时间,系统会自动调用自定义的槽函数//QWidget类的 update()成员函数被调用时,窗口部件会收到绘制事件connect(t, SIGNAL(timeout()), this, SLOT(update()));  //连接信号槽,定时器超时触发窗体更新}//定义绘制事件的处理函数【重定义】
void myWidget::paintEvent(QPaintEvent *event)
{//实例化一个画家类QPainter p(this);//给画家设置画笔p.setPen(QColor(77,65,182));//给画家设置字体p.setFont(QFont("Consolas"));//绘制画家坐标起点p.translate(this->width()/2,this->height()/2);//绘制矢量文字
//    p.drawText(this->rect(), "Hello World");  //  绘制在最顶部
//    p.drawText(this->width()/2,this->height()/2,"LQS");     //此时使用的画笔临时坐标
//    p.drawText(QPoint(0, 0),"LQS");//画家的旋转角度
//    p.rotate(45);//填充颜色p.setBrush(QBrush(QColor(250,240,230)));     //表盘的背景色//画一个圆形
//    p.drawEllipse(0,0,200,100);
//    p.drawEllipse(QPoint(this->width()/2,this->height()/2),200,100);p.drawEllipse(QPoint(0, 0),200,200);//时刻表//给画家设置画笔p.setPen(QColor("black"));for(int i = 0; i < 60; i++){//绘制小短线p.drawLine(200, 0,  190,0);p.rotate(6);}//小时时刻QPen pen;pen.setWidth(3);p.setPen(pen);for(int i = 1; i <= 12; i++){p.rotate(30);//绘制小短线p.drawLine(0,200, 0,185);p.rotate(-2);p.drawText(0,-170,QString("%1").arg(i));p.rotate(2);}//获取当前时间QTime sysTime = QTime::currentTime();//将系统时间转换为字符串QString time_str = sysTime.toString();//字符串拆分出来int hh,mm,ss;QStringList list_time = time_str.split(":");hh = list_time[0].toUInt();mm = list_time[1].toUInt();ss = list_time[2].toUInt();
//    qDebug()<<"时间输出";
//    qDebug()<<hh;
//    qDebug()<<mm;
//    qDebug()<<ss;//秒针绘制
//    p.setPen(QPen(Qt::green, 2));p.setPen(QPen(QColor("green"), 2));p.rotate(ss*6);p.drawLine(QPoint(0,-190),QPoint(0,5));p.rotate(-(ss*6));//分针绘制p.setPen(QPen(QColor("blue"), 2));p.rotate(mm*6 + ss*6/60);p.drawLine(QPoint(0,-120),QPoint(0,5));p.rotate(-(mm*6 + ss*6/60));//时针绘制p.setPen(QPen(QColor("magenta"), 2));p.rotate(hh*30 + mm*6/12 + ss*6/60/12);p.drawLine(QPoint(0,-120),QPoint(0,5));p.rotate(-(hh*30 + mm*6/12 + ss*6/60/12));update();
}
void myWidget::mousePressEvent(QMouseEvent *event)
{//执行启动逻辑【按压鼠标,使用定时器】t_id = this->startTimer(1000);
}//重写的定时器事件处理函数【上面的函数发送信号后,自动执行该程序】
void myWidget::timerEvent(QTimerEvent *event)
{//event表示已经超时的定时器//可以使用event的成员函数timeid来获取已经到位的定时器标识符if(event->timerId() == t_id)    //判断到达事件的id是否为我定义的id【判断是否为我的定时器】调用的函数都是timerEvent这一个{//日期事件//获取系统日期时间QDateTime sysDate = QDateTime::currentDateTime();//将日期时间转换为字符串QString date_str = sysDate.toString("yyyy-MM-dd hh:mm:ss");QString time_str = sysDate.toString("hh:mm:ss");//将字符串输出到ui界面ui->label_show->setText(date_str);QFont ft;ft.setPointSize(12);    //时间显示的大小ui->label_show->setFont(ft);//字符串拆分出来int hh,mm,ss;QStringList list_date = time_str.split(":");hh = list_date[0].toUInt();mm = list_date[1].toUInt();ss = list_date[2].toUInt();
//        qDebug()<<hh;
//        qDebug()<<mm;
//        qDebug()<<ss;}
}

运行结果

Qt实现动态时钟表盘的设计相关推荐

  1. Html5代码实现动态时钟

    以下是一个简单的HTML5动态时钟的示例: <!DOCTYPE html> <html> <head><title>HTML5动态时钟</titl ...

  2. css画钟表_如何使用css3绘制出圆形动态时钟

    使用css3绘制出圆形动态时钟的原理 众所周知的是div形状是方形的,那么我们首先需要使用border-radius属性将其变换成圆形. 为了使指针转动起来,我们需要使用-webkit-transfo ...

  3. python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  4. 用python实现时间的动态(动态时钟)+ 算出某年某月星期几的所有日期

    一个玩得好的朋友突然大晚上的给我布置作业,吓得我精神抖擞.他的原话是: 感觉发现新大陆了,利用小海龟画的,上次玩海龟已经是几个月之前的事情了 https://blog.csdn.net/hanhanw ...

  5. c语言电子时钟课程设计报告,电子时钟嵌入式课程设计报告

    <电子时钟嵌入式课程设计报告>由会员分享,可在线阅读,更多相关<电子时钟嵌入式课程设计报告(19页珍藏版)>请在人人文库网上搜索. 1.合海大学计算机信息工程学院(常州)课程设 ...

  6. 小案例:基于python的动态时钟,带十二时辰和经络养身

    一.前言 1.仅用来研究学习使用. 2.除正常显示时钟外,还可以实时显示当前对应的时辰,和经络养身提示. 3.适合辅助上班族来养生 二.效果如下: 三.源码如下: ''' 动态时钟附带十二时辰显示 ' ...

  7. 用python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  8. Python-使用海龟绘图制作动态时钟

    在实现动态时钟时,需要使用python内置的datetime模块与turtle模块. 1.datetime模块 import datetime (1)datetime模块中datetime类的toda ...

  9. Html5基于Canvas画一个动态时钟

    文章目录 前言 一.前期准备 二.绘制刻度 1.流程 2.效果图 三.绘制文字 1.流程 2.效果图 四.绘制指针 1.取得当前时间 2.绘制秒针 3.绘制分针 4.绘制时针 5.效果图 五.绘制圆心 ...

最新文章

  1. 皮一皮:碰到这样的领导怎么办...
  2. Struts2 action之间相互跳转传递参数
  3. 字节跳动P0级事故:实习生删除GB以下所有模型,直接上了今日头条......
  4. uva1511(找规律。。。)
  5. anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found Import No module named googl
  6. 2018年10个最佳项目管理工具及链接
  7. qt中的mysql能存入多少行数据_Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)...
  8. 虚函数表 对C++ 了解的人都应该知道虚函数
  9. CnPack应用总结
  10. 使用百度识图 完成图片识别和文字识别
  11. go语言编程前景怎么样?国内Go语言布道师许式伟这样说
  12. 河北工业大学开发能力训练之测风数据处理(一)
  13. 计算机英语论文1000,1000字的英语论文范文大全
  14. redis 应用场景
  15. 新闻推荐--从DKN出发
  16. 设备管理器设置了不允许鼠标唤醒电脑,但是鼠标还是会唤醒电脑的解决方法
  17. 外贸人必学的四十个地道英语表达
  18. 西文字体相关术语解说及《干货分享》
  19. NMAP执行脚本smb-check-vulns.nse出错
  20. 怎么样修改照片格式?如何批量转化图片格式?

热门文章

  1. 家教APP开发的功能特点
  2. 【BZOJ4826】【HNOI2017】影魔
  3. 硬盘有坏扇区怎么办?数据还能恢复吗?
  4. 软考高频考点——项目中标了以后该怎么做?
  5. ps照片处理下雪效果
  6. jquery 幻灯片 左右滚动
  7. 创成汇创业者投融资对接应该注意点什么?
  8. 浅谈考雅思(谨以此总结自己经验教训)
  9. 70. 爬楼梯解题思路
  10. 基于“无功控制”模式下双馈风机并网系统研究