Bar*_* El 4 qt mousepress qgraphicsscene
我画线有问题。当鼠标移动缓慢时效果很好,但是当鼠标移动得更快时,会出现一些间隙,我不知道为什么。这是代码:
if(QEvent::MouseButtonPress&&event->buttons()==Qt::LeftButton){
QPointF pt=mapToScene(event->pos());
band->setGeometry(0,0,0,0);
band->hide();
band->update();
this->scene()->addLine(pt.x(),pt.y(),pt.x(),pt.y(),QPen(color, size));
qDebug()<<event->pos();
}
Run Code Online (Sandbox Code Playgroud)
这是一个屏幕截图:

左边画得慢,右边画得快。
所以这是一个非常有趣的问题。我在我的电脑上做同样的事情并得到同样的问题。我没有深入阅读你的代码,因为看起来你是 subclass QGraphicsView,但我 subclass QGraphicsScene,但没关系。我告诉你主要的想法。接下来我可以为您提供:
按原样绘制,但是当用户结束绘制时,您将其删除并绘制1条非常漂亮的曲线而没有此间隙。你应该使用mouseReleaseEvent:
在mouseMoveEvent:
QPoint pos = mouseEvent->scenePos().toPoint();//just get point
pol.append(pos);//append to polygon
//...draw lines or what you want
Run Code Online (Sandbox Code Playgroud)
在构造函数中:
QPolygon pol;
Run Code Online (Sandbox Code Playgroud)
在mouseReleaseEvent您创建QPainterPath,加载多边形并绘制无间隙的法线。
void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QPainterPath myPath;
myPath.addPolygon(pol);
addPath(myPath,QPen(Qt::red,2));
pol.clear();
}
Run Code Online (Sandbox Code Playgroud)
结果:
我移动得非常快并且有间隙(现在我的鼠标按钮被按下)

现在我松开按钮并获得正常曲线

| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |