[英]QT QGraphicsScene Drawing Arc
我有一个关于在场景上绘制特定弧的问题。 我有关于arc的这些信息:
启动Koordinates,Start Angle,End Angle,Radius。
但我不能用QPainter
有效地使用它们。 实际上我尝试使用QPainterPath
在QGraphicsScene
使用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.