0

QGraphicsScene私はこのコードを持っています.私が試みたのは、そのメソッドを再実装するためにサブクラス化することですkeyPressEvent().ちなみに、この特定の実装(特にtypedef部分)を選択して、他の部分との互換性の問題に対処する必要がありました.コード。

keypress.h

#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>

class Canvas;

typedef struct{
    int id;
    int pid;
    Canvas *qgc;

}scene;

class Canvas: public QGraphicsScene {

    private:
        scene *gc;

    public:
        Canvas(Scene* gc, QWidget *parent=0);

    protected:
        void keyPressEvent(QKeyEvent *e);
};

キープレス.cpp

#include <QApplication>
#include <QKeyEvent>

#include "keypress.h"

Canvas::Canvas( Scene* gc, QWidget *parent)
    : QGraphicsScene(parent)
{
    this->gc=gc;
}

void Canvas::keyPressEvent(QKeyEvent *event)
{
   if (event->key() == Qt::Key_Escape) {  
   qApp->quit();
   } 
}

main.cpp

#include <QApplication>
#include "keypress.h"
#include <QGraphicsView>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);  

  Scene *s;
  Canvas *canvas=new Canvas(s);
  canvas->addText("Hello");

  QGraphicsView view(canvas);
  view.show();
  return app.exec();
}

このプログラムをコンパイルしようとすると、エラーが発生します

In file included from keypress.cpp:4:
keypress.h:29: error: expected ‘)’ before ‘*’ token
keypress.cpp:6: error: expected ‘)’ before ‘*’ token
make: *** [keypress.o] Error 1

私のコードの問題は何ですか?

4

0 に答える 0