QPainter基本绘图
只有最基本的画图
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QPainter>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;//Q_DECL_OVERRIDE表示重载
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#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);
setPalette(QPalette(Qt::white));//设置背景为白色
setAutoFillBackground(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);//反锯齿,文字反锯齿
int W=this->width();
int H=this->height();
/* //设置区域
QRect rect1(0,0,W/4,H/4);
//设置画笔
QPen pen;
pen.setWidth(2);//设置线宽
pen.setColor(Qt::black);//线色
pen.setStyle(Qt::SolidLine);//实线线形
pen.setCapStyle(Qt::FlatCap);//端点样式
pen.setJoinStyle(Qt::MiterJoin);//连接样式
painter.setPen(pen);
//设置画刷1
QBrush brush1;
brush1.setColor(Qt::green);//颜色
brush1.setStyle(Qt::HorPattern);//样式
//QPixmap texturePixmap(":images/images/texture2.jpg");
//brush.setStyle(Qt::TexturePattern);//材质填充
//brush.setTexture(texturePixmap);
painter.setBrush(brush1);
//绘图
painter.drawRect(rect1);
*/
//渐变效果
//辐射渐变
/* QRadialGradient radiaGrad(W/2,H/2,qMax(W/16,H/16),W/2,H/2);//辐射填充中心(W/2,H/2),辐射填充半径qMax(W/8,H/8),焦点坐标(W/2,H/2)
radiaGrad.setColorAt(0,Qt::black);//0是起点
radiaGrad.setColorAt(1,Qt::white);//1是终点
radiaGrad.setSpread(QGradient::ReflectSpread);
painter.setBrush(radiaGrad);
painter.drawRect(this->rect());//填充更大的区域
*/
//线形渐变
/* QLinearGradient linearGrad(rect().left(),rect().top()/2,rect().right(),rect().top()/2);//
linearGrad.setColorAt(0,Qt::black);
linearGrad.setColorAt(0.5,Qt::blue);
linearGrad.setColorAt(1,Qt::white);
painter.setBrush(linearGrad);
painter.drawRect(this->rect());
*/
//圆锥渐变
/* QConicalGradient conicalGrad(W/2,H/2,0);
conicalGrad.setColorAt(0,Qt::black);
conicalGrad.setColorAt(0.2,Qt::blue);
conicalGrad.setColorAt(1,Qt::white);
painter.setBrush(conicalGrad);
painter.drawRect(this->rect());
*/
QRect rect(W/4,H/4,W/2,H/2);
int startAngle=90*16;
int spanAngle=90*16;
painter.drawArc(rect,startAngle,spanAngle);
painter.drawChord(rect,startAngle,spanAngle);
QPoint points[4]={QPoint(5*W/12,H/4),QPoint(3*W/4,5*H/12),QPoint(5*W/12,3*H/4),QPoint(W/4,5*H/12)};
painter.drawConvexPolygon(points,4);
QImage image(":images/images/qt.jpg");
//painter.drawImage(rect,image);
QVector<QLine>Lines;
Lines.append(QLine(rect.topLeft(),rect.bottomRight()));
Lines.append(QLine(rect.topRight(),rect.bottomLeft()));
Lines.append(QLine(rect.topLeft(),rect.bottomLeft()));
Lines.append(QLine(rect.topRight(),rect.bottomRight()));
//painter.drawLines(Lines);
QPainterPath path;
path.addEllipse(rect);
path.addRect(rect);
painter.fillPath(path,Qt::red);
}
运行结果