宽度为 1 的 Qt drawLine
Qt drawLine with width 1
我正在写一个CAD程序,我发现了一个奇怪的bug,长话短说,下面的代码显示了这个bug:
p.setPen(QPen(Qt::white, 3));
p.drawLine(410.738, 364.399, -63151.2, -63197.6);
p.setPen(QPen(Qt::cyan, 1));
p.drawLine(410.738, 364.399, -63151.2, -63197.6);
虽然开始和结束坐标完全相同,但这两条线的斜率不同(第一条线斜率正确,青线不正确)。有什么建议吗?
P.S: 我用Qt 4.72
您使用了错误的 drawLine()
签名。您使用的那个以 int
作为参数。 double
值转换为 int
。根据体系结构,结果值可能太大而无法转换为 int
并且您会得到未定义的行为。将 drawLine()
与 QPointF
结合使用:
p.setPen(QPen(Qt::white, 3));
p.drawLine(QPointF(410.738, 364.399), QPointF(-63151.2, -63197.6));
p.setPen(QPen(Qt::cyan, 1));
p.drawLine(QPointF(410.738, 364.399), QPointF(-63151.2, -63197.6));
我正在写一个CAD程序,我发现了一个奇怪的bug,长话短说,下面的代码显示了这个bug:
p.setPen(QPen(Qt::white, 3));
p.drawLine(410.738, 364.399, -63151.2, -63197.6);
p.setPen(QPen(Qt::cyan, 1));
p.drawLine(410.738, 364.399, -63151.2, -63197.6);
虽然开始和结束坐标完全相同,但这两条线的斜率不同(第一条线斜率正确,青线不正确)。有什么建议吗?
P.S: 我用Qt 4.72
您使用了错误的 drawLine()
签名。您使用的那个以 int
作为参数。 double
值转换为 int
。根据体系结构,结果值可能太大而无法转换为 int
并且您会得到未定义的行为。将 drawLine()
与 QPointF
结合使用:
p.setPen(QPen(Qt::white, 3));
p.drawLine(QPointF(410.738, 364.399), QPointF(-63151.2, -63197.6));
p.setPen(QPen(Qt::cyan, 1));
p.drawLine(QPointF(410.738, 364.399), QPointF(-63151.2, -63197.6));