我有一个代码:
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?
答案 0 :(得分:1)
您无法在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
的默认构造函数创建了一个宽度为{{1}}的笔,这已经是化妆品
答案 1 :(得分:0)
不确定您的实际问题是什么,但有些评论:
QPen::setCosmetic()
需要一个bool
参数; 1
可行,但true
是正确的。QPen
的宽度为 QPen
默认为装饰 因此,pen.setCosmetic(true)
不会产生任何影响,无论如何,你的笔应该是装饰性的(意思是,具有与比例因子无关的相同宽度)。
最后,正如@zakinster所说,QPainterPath
没有setPen()
方法。