QT中的绘画工具与定时器工具实现简易时钟
作业要求:使用QT中的绘画工具与定时器工具实现简易时钟
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//重写绘制事件处理函数
void Widget::paintEvent(QPaintEvent *event)
{
//启动定时器
time = startTimer(1000);
QPen pen;
QPainter p(this);
p.setPen(Qt::black);
p.setFont(QFont("黑体",10));
p.setBrush(QColor("pink")); //设置刷子
p.translate(QPoint(width()/2,height()/2));
p.drawEllipse(QPoint(0,0),200,200);
for (int i=0;i<360/6;i++)
{
pen.setWidth(1);
p.setPen(pen);
if(i%5==0)
{
pen.setWidth(2);
p.setPen(pen);
p.drawLine(QPoint(0,-199),QPoint(0,-190));
if(i==0)
p.drawText(QPoint(-15,-160),QString::number(12));
else
p.drawText(QPoint(-15,-160),QString::number((i/5)));
}
p.drawLine(QPoint(0,-199),QPoint(0,-190));
p.rotate(6);
}
QPainter p1(this); //秒针
p1.translate(QPoint(width()/2,height()/2));
pen.setWidth(2);
pen.setColor(QColor("red"));
p1.setPen(pen);
p1.rotate(6*second);
p1.drawLine(QPoint(0,-150),QPoint(0,5));
QPainter p2(this); //分针
p2.translate(QPoint(width()/2,height()/2));
pen.setWidth(5);
pen.setColor(QColor("blue"));
p2.setPen(pen);
p2.rotate(6*minute+6*second/60);
p2.drawLine(QPoint(0,-100),QPoint(0,5));
QPainter p3(this); //时针
p3.translate(QPoint(width()/2,height()/2));
pen.setWidth(8);
pen.setColor(QColor("yellow"));
p3.setPen(pen);
p3.rotate(30*hour+30*minute/60+6*second/60/12);
p3.drawLine(QPoint(0,-50),QPoint(0,5));
}
//重写定时器事件处理函数
void Widget::timerEvent(QTimerEvent *event)
{
//判断是那个定时器到位
if(event->timerId()==time)
{
//获取时间
QTime time = QTime::currentTime();
QString t = time.toString("h:mm:ss");
QStringList timelist =t.split(':'); //通过冒号分割字符串
hour = timelist[0].toUInt(); //将字符串转变为无符号整数
minute = timelist[1].toUInt();
second = timelist[2].toUInt();
conut++;
update();
}
}
实现效果: