繁体   English   中英

QT QGraphicsScene绘图弧

[英]QT QGraphicsScene Drawing Arc

我有一个关于在场景上绘制特定弧的问题。 我有关于arc的这些信息:

启动Koordinates,Start Angle,End Angle,Radius。

但我不能用QPainter有效地使用它们。 实际上我尝试使用QPainterPathQGraphicsScene使用addPath("")显示形状,但我无法正常使用函数。 我的问题是关于如何使用这个infortmation绘制弧以及如何在我的图形场景中显示它。

您可以使用QGraphicsEllipseItem将椭圆,圆和段/弧添加到QGraphicsScene

尝试

QGraphicsEllipseItem* item = new QGraphicsEllipseItem(x, y, width, height);
item->setStartAngle(startAngle);
item->setSpanAngle(endAngle - startAngle);
scene->addItem(item);

不幸的是,QGraphicsEllipseItem仅支持QPainter::drawEllipse()QPainter::drawPie() - 后者可用于绘制弧,但副作用是始终从弧的起点和终点绘制一条线中心。

如果需要真正的弧,您可以例如QGraphicsEllipseItem并覆盖paint()方法:

class QGraphicsArcItem : public QGraphicsEllipseItem {
public:
    QGraphicsArcItem ( qreal x, qreal y, qreal width, qreal height, QGraphicsItem * parent = 0 ) :
        QGraphicsEllipseItem(x, y, width, height, parent) {
    }

protected:
    void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) {
        painter->setPen(pen());
        painter->setBrush(brush());
        painter->drawArc(rect(), startAngle(), spanAngle());

//        if (option->state & QStyle::State_Selected)
//            qt_graphicsItem_highlightSelected(this, painter, option);
    }
};

然后你仍然需要处理项目突出显示,遗憾的是qt_graphicsItem_highlightSelected是在Qt库中定义的静态函数。

暂无
暂无

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

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