Вопрос QGraphicsView

Я не понимаю, что происходит: когда я создаю объект QGraphicsView напрямую и добавляю сцену с растровым изображением, все в порядке, растровое изображение появляется на экране:

scene.addPixmap(pix);
QGraphicsView graphicsView;
graphicsView.setScene(&scene);

Но когда я пытаюсь наследовать класс QGraphicsView с целью переопределения событий, ничего не происходит, и я получаю белый экран без растрового изображения, но такие события, как смена курсора, работают:

scene.addPixmap(pix);
DrawArea graphicsView;
graphicsView.setScene(&scene);

.h файл:

class DrawArea : public QGraphicsView
{
    Q_OBJECT
public:
    DrawArea(QWidget *parent = 0);
    ~DrawArea();
signals:
public slots:
    void mousePressEvent(QMouseEvent * e);
    void paintEvent(QPaintEvent *);
    void enterEvent(QEvent *e);
private:
QPoint coord;
};

Файл.cpp:

DrawArea::DrawArea(QWidget *parent)
    : QGraphicsView(parent){

}

DrawArea::~DrawArea(){

}
void DrawArea::mousePressEvent(QMouseEvent * event){

}
void DrawArea::paintEvent(QPaintEvent *event){

}
void DrawArea::enterEvent(QEvent *event){
    viewport()->setCursor(Qt::CrossCursor);
}

Подскажите, если что-то пропустил, Заранее спасибо.

1 ответ

Решение

Вы должны обрабатывать свои события. Попробуй это:

void DrawArea::mousePressEvent(QMouseEvent * event)
{
     //some actions
     QGraphicsView::mousePressEvent(event);
}

void DrawArea::paintEvent(QPaintEvent *event)
{
     //some actions
     QGraphicsView::paintEvent(event);
}

Также я думаю, что вам не нужно paintEvent вообще делать все необходимое на сцене.

Другие вопросы по тегам