widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
- #include
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
-
- void paintEvent(QPaintEvent *event);
- void timerEvent(QTimerEvent *event);
-
- private:
- int sec_count; //秒
- int min_count; //分
-
- };
-
- #endif // WIDGET_H
widget.cpp
- #include "widget.h"
- #include
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent),sec_count(0),min_count(0)
- {
- setFixedSize(800,600);
- setWindowTitle("画时钟");
- startTimer(1000);
- }
-
- Widget::~Widget()
- {
-
- }
- //重写绘图事件
- void Widget::paintEvent(QPaintEvent *event)
- {
- QPainter p(this); //设置画布为widget
- /*
- QPoint center(width()/2,height()/2);
- p.drawEllipse(center,200,200); //圆心,半径
- p.drawLine(center,QPoint(width()/2,height()/2-150)); //y轴向上为减
- */
- p.translate(width()/2,height()/2); //将画图坐标系的原点移动到主窗口的中心位置
- p.drawEllipse(QPoint(0,0),200,200); //画圆
-
- p.save(); //保存画家当前的坐标系
-
- p.rotate((++sec_count)*6); //将画家的坐标系顺时针旋转6°
- p.drawLine(QPoint(0,0),QPoint(0,-150)); //秒针
-
- p.restore(); //恢复画家之前保存的坐标系
-
- if(sec_count%60 == 0)
- {
- ++min_count; //秒针旋转60秒,分针+1
- }
- p.rotate(min_count*6);
- p.drawLine(QPoint(0,0),QPoint(100,0)); //分针
-
- }
- void Widget::timerEvent(QTimerEvent *event)
- {
- update();
- }
结果

