#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
virtual void paintEvent(QPaintEvent*)override;
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include<QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
//重写绘图事件
void Widget::paintEvent(QPaintEvent*){
#if 0
//this是指定的绘图设备
QPainter painter(this);
//画一条线
painter.drawLine(QPoint(0,0),QPoint(100,100)); //设置两个点位置
//画一个圆
painter.drawEllipse(QPoint(100,100),50,50); //设置圆心位置、上下半径长度
//画一个椭圆
painter.drawEllipse(QPoint(300,300),100,50); //设置圆心位置、左右、上下 半径长度
//画一个矩形
painter.drawRect(QRect(200,200,50,100)); //设置矩形左上角顶点位置、设置款和高
//画文字
painter.drawText(QRect(200,0,100,100),"我爱Qt");
//可以设置画笔,让画家来画
QPen pen =QColor(QColor(255,0,0)); //设置画笔的颜色
pen.setWidth(3); //设置画笔的颜色
pen.setStyle(Qt::DotLine); //设置绘画风格
painter.setPen(pen); //让画家拿起这个笔
painter.drawText(QRect(0,200,100,100),"这是红色的文字");
painter.drawRect(QRect(50,50,300,300));
//设置画刷填充颜色
QBrush brush(Qt::green); //设置绿色的画刷
brush.setStyle(Qt::Dense1Pattern);//设置画刷风格
painter.setBrush(brush);
painter.drawEllipse(QPoint(600,400),100,100); //设置圆心位置、上下半径长度
#endif
//QPainter高级操作
QPainter painter(this);
painter.drawEllipse(QPoint(50,50),50,50);
//设置抗锯齿能力
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(QPoint(150,50),50,50);
painter.drawRect(QRect(200,200,100,100));
//移动画家的位置
painter.translate(200,0); //向x轴移动200,y轴移动0
painter.save(); //保存画家信息
painter.drawRect(QRect(200,200,100,100));
painter.translate(200,0);
painter.restore(); //恢复画家信息,这时画家右恢复到了上次的位置
painter.drawRect(QRect(200,200,150,150));
}
Widget::~Widget()
{
delete ui;
}