#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->lab1=new QLabel("时间",this);
lab1->resize(100,40);
connect(&t1, &QTimer::timeout, this, &Widget::timeout_slot);
t1.start(1000);
connect(&t1,&QTimer::timeout,[&](){
this->update();
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::timeout_slot()
{
QTime sysTime = QTime::currentTime();
QString tm = sysTime.toString("hh:mm:ss");
this->lab1->setText(tm);
}
void Widget:: paintEvent(QPaintEvent *event)
{
QPainter painter(this);
//设置画笔
QPen pen;
pen.setColor(QColor(144,66,255));
pen.setStyle(Qt::SolidLine);
pen.setWidth(5);
painter.setPen(pen);
painter.translate(this->width()/2,this->height()/2);//重设画家坐标中心
painter.drawPoint(0,0);//画个圆心点
painter.setBrush(QBrush(Qt::lightGray)); // 设置填充颜色为浅灰色
painter.drawEllipse(QPoint(0,0),200,200);//画圆
//画小时刻度线
painter.setPen(QPen(Qt::black,5));
for (int i = 0; i < 12; ++i) {
painter.drawLine(198, 0, 190, 0);
painter.rotate(30.0); // 每次旋转30度
}
//画分钟刻度线
painter.setPen(QPen(Qt::black, 2));
for (int i = 0; i < 60; ++i) {
if (i % 5 != 0) { // 排除小时刻度线的位置
painter.drawLine(198, 0, 194, 0);
}
painter.rotate(6.0); // 每次旋转30度 // 每次旋转6度
}
QTime time=QTime::currentTime();
//画秒\分\时线
painter.setPen(QPen(Qt::blue,2)); //秒针长而细
painter.save();
double secondAngle= time.second()*6.0;
painter.rotate(secondAngle);
painter.drawLine(0,0,0,-150);
painter.restore();
painter.setPen(QPen(Qt::green,4)); //分针中等
painter.save();
double minuteAngle= (time.minute() + time.second() / 60.0) * 6.0;
painter.rotate(minuteAngle);
painter.drawLine(0,0,0,-100);
painter.restore();
painter.setPen(QPen(Qt::red,6)); //时针短而粗
painter.save();
double hourAngle= (time.hour() % 12 + time.minute() / 60.0) * 30.0;
painter.rotate(hourAngle);
painter.drawLine(0,0,0,-50);
}
qt网络通信
最新推荐文章于 2024-09-13 16:39:43 发布