Я не понимаю, что происходит: когда я создаю объект QGraphicsView напрямую и добавляю сцену с помощью pixmap, все в порядке, на экране появляется pixmap:
scene.addPixmap(pix);
QGraphicsView graphicsView;
graphicsView.setScene(&scene);
Но когда я пытаюсь наследовать класс QGraphicsView с целью переопределения событий, ничего не происходит, и у меня есть белый экран без pixmap, но такие события, как изменение курсора, работают:
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);
}
Скажи мне, если что-то пропустило, спасибо заранее.
Вы должны обработать свои события. Попробуй это:
void DrawArea::mousePressEvent(QMouseEvent * event)
{
//some actions
QGraphicsView::mousePressEvent(event);
}
void DrawArea::paintEvent(QPaintEvent *event)
{
//some actions
QGraphicsView::paintEvent(event);
}
Кроме того, я думаю, что вам совсем не нужно paintEvent
, делать все необходимое на сцене.
s working, thank you, but how it
связано с setPixmap? Объясните немного больше, пожалуйста.QGraphicsView::someEvent(event);
когда вы вызываете setScene, вы тоже неявно вызываете paintEvent, но ваш paintEvent ничего не делает в вашем коде, но работает правильно в моем коде.