0
点赞
收藏
分享

微信扫一扫

《合成孔径雷达成像算法与实现》Figure5.3

心存浪漫 2023-09-21 阅读 36
qt

1.widget.h

#include <QPainter>         //画家
#include <QTimerEvent>
#include <QTime>
#include<QTimer> //定时器类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = nullptr);
~Widget();

void paintEvent(QPaintEvent *event) override;

//定时器处理函数
void timerEvent(QTimerEvent *e) override;



private:
Ui::Widget *ui;
int timer_id;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);

timer_id = this->startTimer(1000);
}

Widget::~Widget()
{
delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
// static int num=1;
//qDebug()<<num++;
QPainter painter(this);
//
QPen pen;
pen.setColor(QColor("blue"));
pen.setStyle(Qt::SolidLine);
pen.setWidth(5);
//
painter.setPen(pen);
//
painter.translate(this->width()/2,this->height()/2);
//设置画刷和偏移坐标系
painter.rotate(0);
painter.setBrush(QBrush(QColor("skyblue")));
//画个圆
painter.drawEllipse(QPoint(0,0),100,100);

for(int i=0;i<360;i+=30)
{
painter.rotate(30);
painter.drawLine(QPoint(0,-100),QPoint(0,-90));

}
for(int i=0;i<360;i+=6)
{
painter.rotate(6);
painter.drawLine(QPoint(0,-100),QPoint(0,-95));

}


//绘制时针
painter.save(); // 保存当前的绘制状态
// 将绘制的坐标原点移动到表盘的中心
int h=ui->label->text().toInt(); // 获取当前的小时
int m=ui->label_2->text().toInt(); // 获取当前的分钟
double hourAngle = (h%12 + m/60.0)*30.0; // 计算时针的角度,考虑分钟对时针的影响
painter.rotate(hourAngle); // 旋转坐标系,使时针指向正确的位置
painter.setPen(QPen(Qt::black,5)); //设置笔

painter.drawLine(QPoint(0,0),QPoint(0,-30)); // 绘制时针,起点是坐标原点 (0, 0),终点是时针的末端位置
painter.restore(); // 恢复之前保存的绘制状态,以便后续绘制

//绘制分针
painter.save();

double minuteAngle = m*6.0;
painter.rotate(minuteAngle);
painter.setPen(QPen(Qt::red,3)); //设置笔
painter.drawLine(QPoint(0,0),QPoint(0,-50));
painter.restore();

//绘制秒针
painter.save();


int s=ui->label_3->text().toInt();
double secondAngle = s * 6.0;
painter.rotate(secondAngle);
painter.setPen(QPen(Qt::blue,2)); //设置笔
painter.drawLine(QPoint(0,0),QPoint(0,-70));
painter.restore();
this->update();

}



void Widget::timerEvent(QTimerEvent *e)
{

if(e->timerId()==timer_id)
{

QTime sys_t=QTime::currentTime();
QString h=sys_t.toString("hh");
QString m=sys_t.toString("mm");
QString s=sys_t.toString("ss");

ui->label->setText(h);
ui->label_2->setText(m);
ui->label_3->setText(s);
}

}

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

举报

相关推荐

0 条评论