增加QLineF的宽度会导致更改线的起点和终点(长度)

时间:2014-09-25 11:53:34

标签: qt

我遇到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();       }

0 个答案:

没有答案