#ifndef WIDGET_H
#define WIDGET_H
#include
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);
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
qreal x,y,r;
};
#endif // WIDGET_H
-------------------------------------------------
#include "widget.h"
#include "ui_widget.h"
#include "qpainter.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
x = 200;
y = 300;
r = 0;
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.save();//Save current position
painter.setPen(QColor(255,0,0));
painter.setBrush(QColor(0,255,255));
painter.translate(x,y);//Move from the current position
painter.rotate(r);
QPoint polygonPoint[] = {{-10,0},{0,30},{10,0}};
painter.drawPolygon(polygonPoint,3);
QPoint linePointA = {0,20};
QPoint linePointB = {-50,0};
painter.drawLine(linePointA,linePointB);
QRectF rect = {50,0,50,100};
painter.drawRect(rect);
int ellipseX = 0;
int ellipseY = 50;
int ellipseWidth = 50;
int ellipseHeight = 100;
painter.drawEllipse(ellipseX,ellipseY,ellipseWidth,ellipseHeight);
painter.restore();//Restore current position
}
void Widget::on_pushButton_clicked()
{
x = ui->lineEdit->text().toDouble();
y = ui->lineEdit_2->text().toDouble();
r += ui->lineEdit_3->text().toDouble();
update();
}