如何将弧添加到QGraphicsView的前景

时间:2010-09-13 11:26:22

标签: qt qt4 qgraphicsview

如何在QGraphicsView前景中添加QPainter弧。 我找到了QGraphicsView.drawForeground(self,QPainter,QRectF),但我不明白如何使用它。我是qt的新手。我也知道可以在QGraphicsScene中添加一个艺术品,但我需要其他东西的场景。或者有更简单的方法在场景上添加弧到QGraphicsView?弧必须是可变的。 希望可以有人帮帮我。

1 个答案:

答案 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);
}