0

我有一个View包含我的类,QGraphicsView但我无法从它继承。我的代码如下:

class View: public QGraphicsView {//inherits qwidget -- so we can make it full screen there

    Q_OBJECT

    public:
        View(QGraphicsScene * _scene);//this is responsible for setting up the screen and instantiating several elements
        ~View();
    protected:
        virtual void paintEvent(QPaintEvent * event) = 0;

Game继承自View

#include "view.h" //this includes all of the functionality of the different elements

using namespace std;

class Game : public View {//inherit everything above and down into private functions

    public:
        Game(QGraphicsScene * _scene);
        ~Game();

    protected:
        void paintEvent(QPaintEvent * event);

};

我已经paintEvent快速实现coutgame. 当我编译时,一切都编译好了,但是当我运行时,我不断收到一条消息,说调用了一个纯虚函数:

libc++abi.dylib: pure virtual method called
Abort trap: 6

我的View构造函数如下所示:

View::View(QGraphicsScene * _scene) : QGraphicsView(_scene) {...

任何帮助将不胜感激。

4

1 回答 1

0

我得到了paintEvent编译和打开我的应用程序的功能。但是由于某种原因,每当我尝试在我的场景上绘图时,它都不起作用。

但是,如果我取出该paintEvent功能,它就可以正常工作。关于为什么会中断的任何建议paintEvent

在我的主文件中:

QGraphicsEllipseItem * item = new QGraphicsEllipseItem(0, scene);

    item->setRect(50.0, 50.0, 100.0, 100.0);

    view->setRenderHints(QPainter::Antialiasing);

    view->show();

如果我摆脱了虚拟paintEvent功能,这会起作用,但包括它会破坏圆圈的绘制?

于 2012-10-17T10:57:41.597 回答