Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 增加QLineF的宽度会导致更改线的起点和终点(长度)_Qt - Fatal编程技术网

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

Qt 增加QLineF的宽度会导致更改线的起点和终点(长度),qt,Qt,我正面临着一个QLineF的问题。(我对QT很陌生) 在获得QlineF的起点和终点后,我正在使用drawline()函数绘制线条。 这里我们有一个选项供用户使用QSlider编辑绘制线的宽度 在这里,我可以改变线条的宽度,但我可以看到线条的起点和终点有所不同。随着行宽度的增加,Qline的长度逐渐减少 有人知道为什么会发生这种行为吗?如果您需要上传任何代码片段,请告诉我 编辑:我的绘画代码在这里: void EyGsDistance::paint(QPainter * p, const QS

我正面临着一个
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();       }
void EyGsDistance::paint(QPainter*p,const QStyleOptionGraphicsItem*选项,QWidget*小部件)
{p->save();
QPen actPen;
如果(isSelected()==true | | isCurrent()==true)
actPen=激活的PEN;
其他的
actPen=他们的活动范围;
如果(theMouseMoving==true)
{
actPen.setStyle(Qt::DashLine);
}否则
{
actPen.setStyle(Qt::实线);
}
p->setPen(actPen);
if(actPen.widthF()*p->transform().m11()<1)
p->SetRenderInt(QPaint::抗锯齿,false);
其他的
p->SetRenderInt(QPaint::抗锯齿);
double length=sqrt(theVector.x()*theVector.x()+theVector.y()*theVector.y());
双系数=(箭头大小+1.4*actPen.widthF())/长度;
double px=coeff*theVector.x();
double py=coeff*theVector.y();
if(sqrt(px*px+py*py)<长度)
{
QPointF点=QPointF(px,py);
当前行->设置p1(QPointF(0,0)+QPointF(px,py));
当前行->设置P2(向量);
p->drawLine(*当前线);
这->UpdateInstanceText(QPointF(0,0)+QPointF(px,py));
}
p->restore();}

请在这里张贴您的代码。我想你使用QPainter,那么你在哪里画画,怎么画画?看看。我无法从这个文档中得到解决方案。多谢你的帮助。