功能代码:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
timer=new QTimer(this);
connect(timer,&QTimer::timeout,this,&Widget::timerout_slot);
//启动一个定时器
timer->start(1000);
}
Widget::~Widget()
{
delete ui;
}
//绘制事件定义
void Widget::paintEvent(QPaintEvent *event)
{
//qDebug()<<"**********************";
QPainter p(this);
p.setPen(Qt::blue);
p.setFont(QFont("黑体",10));
QBrush b(QColor("pink"));
p.setBrush(b); //设置刷子
//画线
// p.drawLine(10,10,200,200);
//移动画家起始坐标点
p.translate(this->width()/2,this->height()/2);
//旋转坐标
// p.rotate(45);
//画椭圆
p.drawEllipse(QPoint(0,0),120,120);
count=0;
for(int i=0;i<60;i++)
{
QPen pen;
pen.setWidth(2);
pen.setColor("green");
p.setPen(pen);
if(count%5==0)
{
p.drawLine(QPoint(0,120),QPoint(0,113));
p.drawText(QPoint(0,-100),QString("%1").arg(count/5));
}
else
{
p.drawLine(QPoint(0,120),QPoint(0,117));
}
count++;
p.rotate(6);
}
//制作时针
QPen pen;
pen.setWidthF(15);
pen.setColor(QColor("red"));
p.setPen(pen);
p.rotate(hour*30+6*second/60/12+30*minute/60+6*count/60/12);
p.drawLine(QPoint(0,-50),QPoint(0,5));
p.rotate(-(hour*30+6*second/60/12+30*minute/60+6*count/60/12));
//制作分针
pen.setWidthF(10);
pen.setColor(QColor("dark"));
p.setPen(pen);
p.rotate(6*second/60+6*minute);
p.drawLine(QPoint(0,-60),QPoint(0,5));
p.rotate(-(6*second/60+6*minute));
//制作秒针
pen.setWidthF(5);
pen.setColor(QColor("blue"));
p.setPen(pen);
p.rotate(6*second);
p.drawLine(QPoint(0,-70),QPoint(0,5));
}
void Widget::timerout_slot()
{
//获取时间
QDateTime time=QDateTime::currentDateTime();
//将时间转换成字符串
QString t=time.toString("HH:mm:ss");
QStringList timelist=t.split(':'); //通过:将字符串分割成二个字符串
hour =timelist[0].toUInt(); //将字符串转变成无符号整数
minute=timelist[1].toUInt();
second=timelist[2].toUInt();
update();
}
运行效果: