如何在QGraphicsView前景中添加QPainter弧。 我找到了QGraphicsView.drawForeground(self,QPainter,QRectF),但我不明白如何使用它。我是qt的新手。我也知道可以在QGraphicsScene中添加一个艺术品,但我需要其他东西的场景。或者有更简单的方法在场景上添加弧到QGraphicsView?弧必须是可变的。 希望可以有人帮帮我。
答案 0 :(得分:3)
您需要创建自己的QGraphicsView
子类并实现drawForeground()
方法。您可以使用此代码作为示例:
<强> MyGraphicsView.h:强>
#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H
#include <QGraphicsView>
class MyGraphicsView : public QGraphicsView
{
public:
MyGraphicsView(QWidget * parent = 0);
MyGraphicsView(QGraphicsScene * scene, QWidget * parent = 0);
virtual ~MyGraphicsView();
protected:
void drawForeground(QPainter * painter, const QRectF & rect);
};
#endif /* MYGRAPHICSVIEW_H */
<强> MyGraphicsView.cpp:强>
#include "MyGraphicsView.h"
MyGraphicsView::MyGraphicsView(QWidget * parent) :
QGraphicsView(parent)
{
}
MyGraphicsView::MyGraphicsView(QGraphicsScene * scene, QWidget * parent) :
QGraphicsView(scene, parent)
{
}
MyGraphicsView::~MyGraphicsView()
{
}
void MyGraphicsView::drawForeground(QPainter * painter, const QRectF & rect)
{
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
painter->drawArc(rect, startAngle, spanAngle);
}