#include "ui_dialog.h"
#include
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
resize(600,500);
pix = QPixmap(600,500);
pix.fill(Qt::black);
a=0;
QTimer *timer = new QTimer(this);
//新建定时器
connect(timer,SIGNAL(timeout()),this,SLOT(paintEvent()));
//关联定时器计满信号和相应的槽函数
timer->start(1000);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::paintEvent(QPaintEvent *)
{
QPainter pp(&pix);
QRectF rectangle(100.0, 100.0, 400.0, 400.0); //矩形
int startAngle = 0 * 16; //起始角度
int spanAngle = 180 * 16; //跨越度数
QPainter painter(this);
painter.drawPixmap(0,0,pix);
painter.setPen(QPen(Qt::white,5,Qt::DotLine));
painter.drawArc(rectangle, startAngle, spanAngle);
painter.setRenderHint(QPainter::Antialiasing,true);
static const QPointF points[4] = {
QPointF(100.0, 300.0),
QPointF(260.0, 290.0),
QPointF(300.0, 300.0),
QPointF(260.0, 310.0)
};
QLinearGradient linearGradient(100,300,300,300);
linearGradient.setColorAt(0,Qt::green);
linearGradient.setColorAt(1,Qt::white);
painter.setBrush(linearGradient);
painter.setPen(QPen(Qt::black,Qt::SolidLine));
painter.translate(300,300);//以指针根部为旋转中心(移动原点)
painter.rotate(a);
painter.translate(-300,-300);//恢复原点
painter.drawPolygon(points, 4);
a=a+10;
}