1.示例执行代码
QPen myopen;
//获取当前时间
MyTime=QTime::currentTime();
MyTime_s=MyTime.toString();
QStringList timeParts=MyTime_s.split(":");
hh=timeParts[0].toInt();
mm=timeParts[1].toInt();
ss=timeParts[2].toInt();
update();
QPainter painter(this);
painter.translate(this->width() / 2, this->height() / 2);
// 绘制圆形边框
painter.setPen(Qt::black);
painter.setBrush(QBrush(Qt::green));
//painter.drawEllipse( -150,-150 , 300, 300);
painter.drawEllipse( QPointF(0,0),150,150);
//绘制表盘分,秒刻度线
myopen.setColor("red");
myopen.setWidth(2);
painter.setPen(myopen);
for(int i=1;i<=60;i++)
{ if(i%5!=0){
painter.save();
painter.rotate(i*6);
painter.drawLine(0,-150,0,-145);
painter.restore(); // 恢复画笔状态
}
}
// 绘制表盘小时刻度
QPen pen(Qt::black, 3); // 刻度线宽度为 3 个像素
painter.setFont(QFont("幼圆", 10));
painter.setPen(pen);
for (int i = 1; i <=12; ++i) {
painter.save();
painter.rotate(i*30.0);
painter.drawLine(150, 0, 140, 0);
painter.drawText(0,-130,QString("%1").arg(i));
painter.restore(); // 恢复画笔状态
}
// 绘制时针
/*************************/
painter.save(); // 保存画笔状态,用于后面恢复0
myopen.setColor("red");
myopen.setWidth(5);
painter.setPen(myopen);
painter.rotate((hh % 12) * 30.0 + mm * 0.5 + ss * 6/60/12);
//painter.drawLine(0, 0, 45, 45);
painter.drawLine(0, 0, 0, -80);
painter.restore(); // 恢复画笔状态
/*************************/
// 绘制分针
/*************************/
painter.save(); // 保存画笔状态,用于后面恢复
myopen.setColor("blue");
myopen.setWidth(3);
painter.setPen(myopen);
painter.rotate(mm * 6 + ss * 0.1);
// painter.drawLine(0, 0, 65, 65);
painter.drawLine(0, 0, 0, -120);
painter.restore(); // 恢复画笔状态
/*************************/
//绘制秒针
/*************************/
painter.save(); // 保存画笔状态,用于后面恢复
myopen.setColor("green");
myopen.setWidth(2);
painter.setPen(myopen);
painter.rotate(ss * 6);
// painter.drawLine(0, 0, 80, 80);
painter.drawLine(0, 20, 0, -110);
painter.restore(); // 恢复画笔状态
/*************************/
2.示例图