Qt5菜鸟入门(1)qt时钟

来源:互联网 发布:倚天分析软件 编辑:程序博客网 时间:2024/05/19 20:49

一直想学Qt很久了,但是总觉得没空(有其他的事忙),今天终于开始了第一步。

        今天看了一个Qt creator编的系统时钟例子,也看了系统自带的一些例子(qt5 的系统自带例子是放在qt creator欢迎页面的例子里面,汗!字太小,开始还没找到。。)。

自己照着视频讲解编写了第一个程序--qt时钟。(网址:http://v.youku.com/v_show/id_XMTgzMjA5NDg4.html   网址:http://www.tudou.com/programs/view/xDH6q0kYLVA/)

包含文件:

(1)clock.h 内容:

#ifndef CLOCK_H
#define CLOCK_H
#include <QWidget>
#include <QPainter>
#include <QPoint>
static QPoint sed[4]={QPoint(0,-70),QPoint(2,0),QPoint(0,10),QPoint(-2,0)};
static QPoint min[4]={QPoint(0,-60),QPoint(4,0),QPoint(0,12),QPoint(-4,0)};
static QPoint hou[4]={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
(2)clock.cpp 内容:

#include <QApplication>
#include "clock.h"
#include <QTime>
#include <QTimer>
Clock::Clock(QWidget *parent)
    :QWidget(parent)
{
    QTimer *timer = new QTimer(this);
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(update()));
    resize(200,200);
}
Clock::~Clock()
{
}
void Clock::paintEvent(QPaintEvent *)
{
    QPainter paint(this);
    //paint.drawLine(0,0,100,100);
    QTime time = QTime::currentTime();
    paint.translate(100,100);
   // paint.drawLine(0,0,100,100);
    paint.setRenderHint(QPainter::Antialiasing);
    paint.setBrush(Qt::red);
    paint.setPen(Qt::red);
    paint.save();
    paint.rotate(6.0*time.second());
    paint.drawConvexPolygon(sed,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,5);
    paint.restore();
    paint.setBrush(Qt::black);
    paint.setPen(Qt::black);
    paint.save();
    paint.rotate(30.0*(time.hour()+time.minute()/60.0));
    paint.drawConvexPolygon(hou,5);
    paint.restore();
    //paint.drawLine(0,-88,0,-98);
    for(int i=0;i<12;i++)
    {
        paint.rotate(30);
        paint.drawLine(0,-88,0,-98);
    }
}
运行的效果如下:




0 1
原创粉丝点击