#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
QGraphicsScene *scene;
QGraphicsPixmapItem *pointer;
QPixmap pix1;
QPixmap pix2;
int m_angle;
float w[2];
float h[2];
private slots:
void valueChange(int value);
void repaint();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit->setText(QString("0")+QString("° "));
ui->lineEdit->setReadOnly(true);
m_angle =0; //初始度
QTimer *timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(repaint()));
timer->start(1000);
w[0] =300; //初始宽度
w[1] = w[0]; // w[1]和h[1]用于保存图片缩放前的宽和高
h[0]= 300;
h[1] =h[0];
ui->horizontalSlider->setMaximum(360);
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(valueChange(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::valueChange(int value)
{
ui->lineEdit->setText(QString::number(value)+ "° ");
m_angle=value;
}
void MainWindow::repaint()
{
w[0] =ui->graphicsView->width();
pix1.load(":./11.jpg");
pix2.load("");
scene = new QGraphicsScene(this);
scene->setSceneRect(0,0,300,300);
ui->graphicsView->setScene(scene);
ui->graphicsView->scale(w[0]/w[1],w[0]/w[1]);
w[1]=w[0];
h[1]=h[0];
scene->setBackgroundBrush(pix1);
pointer = new QGraphicsPixmapItem();
pointer->setPixmap(pix2);
pointer->setPos(150,150);
scene->addItem(pointer);
pointer->setRotation(360 -m_angle);
QGraphicsTextItem *degree = new QGraphicsTextItem();
degree->setPos(111,118);
degree->setHtml(QString("<h2><font color = red size =5>%1° </font></h2>").arg(m_angle));
scene->addItem(degree);
}