利用Qt来实现一个时钟小程序
来源:互联网 发布:太早遇到对的人 知乎 编辑:程序博客网 时间:2024/05/17 09:37
要实现一个时钟小程序,我们首先想到需要以下的几个东西:
1. 时针
2.时针刻度
3.分针
4.分针刻度
5.秒针
要实现这个可以继承自QWidget,并在其中的paintEvent(QPaintEvent *event)Q_DECL_OVERLOAD;重载函数中来实现
具体代码如下:
#ifndef ANALOGCLOCK_H#define ANALOGCLOCK_H#include<QtWidgets>class AnalogClock : public QWidget{ Q_OBJECTpublic: explicit AnalogClock(QWidget *parent = 0); ~AnalogClock();signals:public slots:protected: //重载函数,实现窗口的重绘 void paintEvent(QPaintEvent* evnet)Q_DECL_OVERRIDE;};#endif // ANALOGCLOCK_H
#include "analogclock.h"#include<QtWidgets>AnalogClock::AnalogClock(QWidget *parent) : QWidget(parent){ //构造函数,设置定时器 QTimer* timer = new QTimer(this); connect(timer ,SIGNAL(timeout()) ,this , SLOT(update()) ); timer->start(1000); setWindowTitle(tr("Analog Clock")); resize(200 , 200);}AnalogClock::~AnalogClock(){}void AnalogClock::paintEvent(QPaintEvent *evnet){ //时针多边形 static const QPoint hourHand[3] = { QPoint(7,8), QPoint(-7,8), QPoint(0,-40) }; //分针多边形 static const QPoint minuteHand[3] = { QPoint(7,8), QPoint(-7,8), QPoint(0, -70) }; //秒针多边形 static const QPoint secondHand[3] = { QPoint(7 , 8), QPoint(-7 , 8), QPoint(0 , -90) }; //设置颜色 QColor hourColor(127 , 0 , 127); QColor minuteColor(0 , 127 , 127 , 191); QColor secondColor(0 ,0 , 127 ); int side = qMin(width() , height()); //获取当前时间 QTime time = QTime::currentTime(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.translate(width()/2 , height()/2); painter.scale(side/200.0 , side/200.0); painter.setPen(Qt::NoPen); painter.setBrush(hourColor); painter.save(); //旋转painter painter.rotate(30.0 * ((time.hour() + time.minute()/60.0))); //画指针多边形 painter.drawConvexPolygon(hourHand , 3); painter.restore(); painter.setPen(hourColor);//画时针的刻度 for(int i = 0 ; i < 12; ++i){ painter.drawLine(88 , 0 , 96 , 0); painter.rotate(30.0); } painter.setPen(Qt::NoPen); painter.setBrush(minuteColor); painter.save(); painter.rotate(6.0 * (time.minute() + time.second()/60)); painter.drawConvexPolygon(minuteHand , 3); painter.restore(); painter.setPen(minuteColor); for(int j = 0 ; j < 60 ; ++j){ if((j %5) != 0) { painter.drawLine(92 , 0 , 96 , 0); } painter.rotate(6.0); } painter.setPen(Qt::NoPen); painter.setBrush(secondColor); painter.save(); painter.rotate(6.0 *(time.second())); painter.drawConvexPolygon(secondHand , 3); // painter.restore(); painter.restore();}
然后就可以在main中使用这个时钟类了,直接实例化一个对象就可以使用了
具体如下:
//#include "mainwindow.h"#include <QApplication>#include"analogclock.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); AnalogClock w; w.show(); return a.exec();}
0 0
- 利用Qt来实现一个时钟小程序
- 一个小时钟程序
- 利用widget实现一个时钟功能小插件
- SDK 一个时钟小程序
- 一个时钟显示小程序
- Qt中如何利用QPushButton来实现一个弹出菜单
- 利用runnable接口和Thread类 创建一个数字时钟小程序
- 来用Qt实现一个桌面弹幕程序吧
- C++利用time_t来实现一个周期性执行程序
- 关于时钟的一个小程序
- 【Qt编程】Qt 小时钟
- 一个简单的时钟程序《VC实现》
- 利用QT来实现读取电脑屏幕
- QT模拟时钟程序
- QT时钟程序
- 利用QT编写一个简单爬虫程序
- java做的一个时钟的小程序
- java写一个Swing小程序:《我的时钟》
- 基本数据类型和表达式
- 2015 Multi-University Training Contest 5
- HDOJ Osu! 5078【2014鞍山区域赛I题-水】
- Linux信号列表
- Python中逐行读取文件内容的办法
- 利用Qt来实现一个时钟小程序
- 深入探讨在集群环境中使用 EhCache 缓存系统
- 解决编译libiconv时报错:./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)
- 非常详细GC学习笔记
- springMVC学习笔记---修改配置文件路径和传递数据
- Shell脚本中执行mysql语句
- 如何快速的将pdf转换成txt格式
- ext的相关
- JAVAweb 学习总结