繁体   English   中英

drawtext在Qt中不起作用

[英]drawtext doesn't work in Qt

我在一个项目上工作,该项目包括用qt创建一个uml工具,现在我在箭头上有drawingtext问题,所以这是我的代码:

void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem * ,QWidget *)
{
    if (myStartItem->collidesWithItem(myEndItem))
        return;

    QPen myPen = pen();
    myPen.setColor(myColor);
    qreal arrowSize = 20;
    painter->setPen(myPen);
    painter->setBrush(myColor);

    QLineF centerLine(myStartItem->pos(), myEndItem->pos());
    QPolygonF endPolygon = myEndItem->polygon();
    QPointF p1 = endPolygon.first() + myEndItem->pos();
    QPointF p2;
    QPointF intersectPoint;
    QLineF polyLine;
    for (int i = 1; i < endPolygon.count(); ++i)
    {
        p2 = endPolygon.at(i) + myEndItem->pos();
        polyLine = QLineF(p1, p2);
        QLineF::IntersectType intersectType =
            polyLine.intersect(centerLine, &intersectPoint);
        if (intersectType == QLineF::BoundedIntersection)
            break;
        p1 = p2;
    }

    setLine(QLineF(intersectPoint, myStartItem->pos()));

    double angle = ::acos(line().dx() / line().length());
    if (line().dy() >= 0)
        angle = (Pi * 2) - angle;

    QPointF arrowP1 = line().p1() + QPointF(sin(angle + Pi / 3) * arrowSize,
                                            cos(angle + Pi / 3) * arrowSize);
    QPointF arrowP2 = line().p1() + QPointF(sin(angle + Pi - Pi / 3) * arrowSize,
                                            cos(angle + Pi - Pi / 3) * arrowSize);

    arrowHead.clear();
    arrowHead << line().p1() << arrowP1 << arrowP2;
    painter->drawLine(line());
    //painter->drawPolygon(arrowHead);
    if (isSelected())
    {
        painter->setPen(QPen(myColor, 1, Qt::DashLine));
        QLineF myLine = line();
        myLine.translate(0, 4.0);
        painter->drawLine(myLine);
        myLine.translate(0,-8.0);
        painter->drawLine(myLine);
        QPoint point = QPoint( 10, 20 );
        painter->drawText( point, "You can draw text from a point..." );
    }
}

没有任何反应,我可以画箭头,但是箭头上没有出现文本,我该怎么办? 请我需要一些帮助

海事组织,你做错了。

您应该使用QGraphicsPathItemQGraphicsPolygonItemQGraphicsRectItemQGraphicsSimpleTextItem组成图形项,而不是自己绘制所有内容。 只需提供一些负责管理子项的根项(线文本和多边形)即可。 正确执行此操作会更容易。

其次,您的绘画方法是错误的。 您应该恢复画家的初始状态!

最后,我很确定您的问题是由于boundingRect的错误实现引起的。 在绘画方法中执行这种复杂绘图时,这是一个非常常见的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM