我有一个类似的代码:

     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。

10-04 21:02