十八、Qt 2D 绘图(八)涂鸦板 上面一节我们深入分析了一下 Qt的坐标系统,这一节我们在前面程序的基础上稍加改动,设计一个涂鸦板程序
简单的涂鸦板: 1
我们再在程序中添加函数
我们在dialog
h里的public中再添加鼠标移动事件和鼠标释放事件的函数声明: void mouseMoveEvent(QMouseEvent *); void mouseReleaseEvent(QMouseEvent *); 在 private中添加变量声明: QPixmap pix; QPoint lastPoint; QPoint endPoint; 因为在函数里声明的 QPixmap类对象是临时变量,不能存储以前的值,所以为了实现保留上次的绘画结果,我们需要将其设为全局变量
后两个 QPoint变量存储鼠标指针的两个坐标值,我们需要用这两个坐标值完成绘图
在 dialog
cpp中进行修改
在构造函数里进行变量初始化
resize(600,500); //窗口大小设置为 600*500 pix = QPixmap(200,200); pix
fill(Qt::white); 然后进行其他几个函数的定义: void Dialog::paintEvent(QPaintEvent *) { QPainter pp(&pix); pp
drawLine(lastPoint,endPoint); //根据鼠标指针前后两个位置就行绘制直线 lastPoint = endPoint; //让前一个坐标值等于后一个坐标值,这样就能实现画出连续的线 QPainter painter(this); painter
drawPixmap(0,0,pix); } void Dialog::mousePressEvent(QMouseEvent *event) { if(event->bu