2

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

4

1 回答 1

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);
}
于 2010-09-15T04:44:37.797 回答