Вопрос 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
вообще делать все необходимое на сцене.