绘画板
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//构造一个膜的对象
pix = new QPixmap(this->size()); //用当前界面大小构造一个膜
pix->fill(Qt::white); //设置膜的填充色
}
Widget::~Widget()
{
delete ui;
}
//鼠标移动事件处理函数
void Widget::mouseMoveEvent(QMouseEvent *event)
{
//定义一个画家,在膜上进行作画
QPainter p1(pix);
QPen pen;
pen.setColor(QColor("red"));
pen.setWidth(2);
p1.setPen(pen); //红笔
//不断在两点之间画直线
p1.drawLine(startPoint, event->pos());
//更新起始点
startPoint = event->pos();
//手动调用更细函数
this->update();
}
//鼠标按压事件处理函数
void Widget::mousePressEvent(QMouseEvent *event)
{
//获取起始位置
startPoint = event->pos();
}
//绘制事件处理函数
void Widget::paintEvent(QPaintEvent *event)
{
//定义一个画家,在界面上进行作画
QPainter p2(this);
//绘制图像
p2.drawPixmap(QPoint(0,0), *pix);
}
思维导图