我遇到QLineF
的问题。 (我对QT很新)
获取QlineF
的开始和结束点后,我使用drawline()
函数绘制线条。
在这里,我们有一个选项供用户使用QSlider
编辑绘制线条的宽度。
在这里我可以改变线条的宽度,但我可以看到线条的起点和终点有些不同。随着线宽增加,Qline
的长度逐渐减小。
有人知道为什么会发生这种行为吗?如果您需要上传任何代码段,请与我联系。
编辑:我的油漆代码在这里:
void EyGsDistance::paint(QPainter * p, const QStyleOptionGraphicsItem * option, QWidget * widget)
{ p->save();
QPen actPen;
if (isSelected() == true || isCurrent() == true)
actPen = theActivePen;
else
actPen = theInactivePen;
if(theMouseMoving == true)
{
actPen.setStyle(Qt::DashLine);
}else
{
actPen.setStyle(Qt::SolidLine);
}
p->setPen(actPen);
if (actPen.widthF() * p->transform().m11() < 1)
p->setRenderHint(QPainter::Antialiasing, false);
else
p->setRenderHint(QPainter::Antialiasing);
double length = sqrt(theVector.x() * theVector.x() + theVector.y() * theVector.y());
double coeff = (theArrowSize + 1.4 * actPen.widthF())/length;
double px = coeff * theVector.x();
double py = coeff * theVector.y();
if (sqrt(px * px +py * py) < length)
{
QPointF point = QPointF(px, py);
theCurrentLine->setP1(QPointF(0, 0) + QPointF(px, py));
theCurrentLine->setP2(theVector);
p->drawLine(*theCurrentLine);
this->updateDistanceText(QPointF(0, 0) + QPointF(px, py));
}
p->restore(); }