逻辑梳理
实现效果如下图:
![]()
逻辑如下:
将线段使用QVector进行保存,因为可能需要绘制多条线段.
鼠标按下和释放的时候记录起始和终点位置,并且保存在数据列表中.
鼠标移动过程中,动态刷新图像绘制,并且绘制临时坐标点(因鼠标没被释放,因此终点坐标随时变化)
![]()
关键的消息接口 void mousePressEvent(QMouseEvent *event); // 鼠标按下,当鼠标按下时发送该信号 void mouseReleaseEvent(QMouseEvent *event); // 鼠标释放,当鼠标释放时发送信号 // 鼠标移动. m_drawingPaperView->setMouseTracking(true); 注意需要设置捕获鼠标轨迹. void mouseMoveEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event); // 绘制,当执行update时刷新绘制.
源码
代码结构:
![]()
mainwindow.h
#ifnde
Qt小王子
微信公众号
Qt分享+螺蛳粉购买
评论记录:
回复评论: