我有一个类似的代码:
QPainterPath groupPath;
QPen pen; // new
pen.setCosmetic(1); // new
groupPath.setPen(pen); // error (error: class "QPainterPath" has no member "setPen")
groupPath.moveTo(60.0, 40.0);
groupPath.arcTo(40.0, 35.0, 40.0, 10.0, 180.0, 180.0);
groupPath.moveTo(40.0, 40.0);
groupPath.lineTo(40.0, 80.0);
groupPath.arcTo(40.0, 75.0, 40.0, 10.0, 0.0, 180.0);
groupPath.lineTo(80.0, 80.0);
groupPath.lineTo(80.0, 40.0);
groupPath.closeSubpath();
如何在代码中使用setPen来使用Cosmetic?
最佳答案
您不能在setPen()
上使用QPainterPath
,因为它不是画家,而只是一条路径。
您应该创建一个QPainter
,在其上使用setPen()
,然后绘制路径:
QPainter painter(this);
QPen pen;
pen.setCosmetic(true);
painter.setPen(pen);
QPainterPath groupPath
groupPath.moveTo(60.0, 40.0);
groupPath.arcTo(40.0, 35.0, 40.0, 10.0, 180.0, 180.0);
groupPath.moveTo(40.0, 40.0);
groupPath.lineTo(40.0, 80.0);
groupPath.arcTo(40.0, 75.0, 40.0, 10.0, 0.0, 180.0);
groupPath.lineTo(80.0, 80.0);
groupPath.lineTo(80.0, 40.0);
groupPath.closeSubpath();
painter.drawPath(groupPath);
另外,正如@Andreas所说,不需要
pen.setCosmetic(true)
,因为QPen()
的默认构造函数会创建一个宽度为0
的笔,它已经是Cosmetic。