1、打开软件,创建一个GUI项目文件。
2、编写.h(Draw2.h)文件代码,如下:
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_Draw2.h"
#include <QMouseEvent>
#include <QPainter>
class Draw2 : public QMainWindow
{
Q_OBJECT
public:
Draw2(QWidget *parent = Q_NULLPTR);
private:
Ui::Draw2Class ui;
protected:
void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void paintEvent(QPaintEvent *e);
private:
QImage m_image; //实际画图的地方
QPoint m_prevPoint; //前一点的坐标位置
QPoint m_curPoint; //当前点的坐标
};
3、编写.cpp代码,如下:
#include "Draw2.h"
Draw2::Draw2(QWidget *parent)
: QMainWindow(parent),
m_prevPoint(QPoint(0, 0)),
m_curPoint(QPoint(0, 0))
{
ui.setupUi(this);
QColor backclolor = qRgb(255, 255, 255);
m_image = QImage(width(), height(), QImage::Format_RGB32); //将大小设置成和界面一样大,这样刷图就刚好刷完整个界面
m_image.fill(backclolor);
}
void Draw2::mousePressEvent(QMouseEvent *e)
{
m_prevPoint = e->pos();
}
void Draw2::mouseReleaseEvent(QMouseEvent *e)
{
m_curPoint = e->pos();
QPainter painter(&m_image);
QPen pen;
pen.setColor(Qt::red);
pen.setWidth(2);
painter.setPen(pen);
painter.drawLine(m_prevPoint, m_curPoint);
update();
}
void Draw2::mouseMoveEvent(QMouseEvent *e)
{
//m_curPoint = e->pos();
//QPainter painter(&m_image);
//QPen pen;
//pen.setColor(Qt::blue);
//pen.setWidth(2);//线宽
//painter.setPen(pen);
//painter.drawLine(m_prevPoint, m_curPoint);
//update();
//m_prevPoint = m_curPoint;
}
void Draw2::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.drawImage(0, 0, m_image);
}
3、运行效果图。
4、暂存
QPen pen; //画笔。绘制图形边线,由颜色、宽度、线风格等参数组成
pen.setColor(Qt::blue);
QBrush brush; //画刷。填充几何图形的调色板,由颜色和填充风格组成
brush.setColor(Qt::white);
brush.setStyle(Qt::SolidPattern);
QPainter painter(&m_image); //可在QPaintDevice上绘制各种图形。QPaintDevice有之类QWidget、QImage、QOpenGLPaintDevice等
painter.setPen(pen);
painter.setBrush(brush);
painter.drawRect(50, 50, 200, 100);//起点、终点、宽度、高度