开源万岁 发表于 2015-1-27 20:19:06

C++写的时钟(详细注释)


#include "clock.h"

Clock::Clock(QWidget *parent)
    : QWidget(parent)
{
    resize(200,200);      //设置窗口大小
    QTimer *timer = new QTimer(this) ;//使用定时器,1s刷新一次
    timer->start(1000);/./定时器时间为1s
    connect(timer ,SIGNAL(timeout()) ,this , SLOT(update()) );//信号是定时器,槽是刷新函数
}

Clock::~Clock()
{

}
void Clock::paintEvent(QPaintEvent *)
{
    QPainter paint(this);
    QTime time = QTime::currentTime();//获取当前时间

    paint.translate(100,100);//平移坐标系
    paint.setRenderHint(QPainter::Antialiasing);//设置曲线光滑

    paint.setBrush(Qt::red);//设置画刷画笔颜色
    paint.setPen(Qt::red);
    paint.save();//保存坐标系当前状态
    paint.rotate(6.0*time.second());//坐标轴顺时针旋转
    paint.drawConvexPolygon(sec,4);//四点画多边形(指针形状)
    paint.restore();//恢复坐标轴

    paint.setBrush(Qt::blue);
    paint.setPen(Qt::blue);
    paint.save();
    paint.rotate(6.0*(time.minute()+time.second()/60.0));
    paint.drawConvexPolygon(min,4);
    paint.restore();

    paint.setBrush(Qt::black);
    paint.setPen(Qt::black);
    paint.save();
    paint.rotate(30.0*(time.hour()+time.minute()/60.0));
    paint.drawConvexPolygon(hour,4);
    paint.restore();

    for(int i = 0 ; i<12 ; i++)//十二次旋转坐标轴,画表盘
    {
      paint.rotate(30);
      paint.drawLine(0,-100,0,-90);
    }
}


JayChen 发表于 2015-1-27 20:24:26

clock.h为什么我提示没有?
楼主自己写的?

开源万岁 发表于 2015-1-27 20:27:14

JayChen 发表于 2015-1-27 20:24
clock.h为什么我提示没有?
楼主自己写的?

是的
没有发完整,只发了核心部分,下面是clock.h#ifndef CLOCK_H
#define CLOCK_H

#include <QWidget>
#include <QPainter>
#include <QPoint>
#include <QTime>
#include <QTimer>

static QPoint sec = {QPoint(0,-70),QPoint(2,0),QPoint(0,10),QPoint(-2,0)};
static QPoint min = {QPoint(0,-60),QPoint(4,0),QPoint(0,12),QPoint(-4,0)};
static QPoint hour = {QPoint(0,-50),QPoint(6,0),QPoint(0,13),QPoint(-6,0)};

class Clock : public QWidget
{
    Q_OBJECT

public:
    Clock(QWidget *parent = 0);
    ~Clock();
protected:
    void paintEvent(QPaintEvent *);
};
#endif // CLOCK_H


开源万岁 发表于 2015-1-27 20:29:29

忘了说,用的不是MFC而是QT类库:ton:

JayChen 发表于 2015-1-27 20:31:54

额,建议发代码用代码格式,好看一点:lol:

小海儿~ 发表于 2015-1-27 20:34:34

短小精悍 很强大

开源万岁 发表于 2015-1-27 20:34:39

。。。新鱼油,以后会注意的

lies_for_L 发表于 2015-1-27 23:49:49

nb

qdwushuming 发表于 2015-1-28 08:41:37

回帖挣鱼币

百日维新 发表于 2015-1-28 21:26:26

freeparty 发表于 2015-1-28 22:20:19

我要鱼币

freeparty 发表于 2015-1-28 22:23:05

还真是盗版商:huffy:

开源万岁 发表于 2015-1-28 23:03:23

freeparty 发表于 2015-1-28 22:23
还真是盗版商

什么意思????????????

freeparty 发表于 2015-1-29 06:44:48

开源万岁 发表于 2015-1-28 23:03
什么意思????????????

发错了

aswyamato1989 发表于 2015-1-30 13:54:08

学习一下,感谢楼主分享。

开源万岁 发表于 2015-1-30 16:10:36

aswyamato1989 发表于 2015-1-30 13:54
学习一下,感谢楼主分享。

一起学习

w1933918191 发表于 2015-1-30 22:31:13

这用什么软件啊 我是初学者,不是用的Code::Blocks软件运行吧?

开源万岁 发表于 2015-1-31 13:32:51

w1933918191 发表于 2015-1-30 22:31
这用什么软件啊 我是初学者,不是用的Code::Blocks软件运行吧?

使用的QT类库,就是用C++调用QT类库,和用C++ 调用MFC类库一样,编译器可以用CodeBlocks ,VC6.0,VS ,QT Creater

!@R键! 发表于 2015-1-31 16:25:56

学习了

!@R键! 发表于 2015-1-31 16:27:07

我去看看C++的绘图函数吧
页: [1] 2
查看完整版本: C++写的时钟(详细注释)