Я не понимаю Что происходит: когда я создаю объект 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);
}
Скажите мне, если что-то пропустил, спасибо заранее.
Он работает, спасибо, но как он связан с setPixmap? Объясните немного больше, пожалуйста. – Ivan
@Ivan В вашей производной DrawArea вы ничего не делаете, но вы должны хотя бы обрабатывать событие, вы можете сделать это с помощью 'QGraphicsView :: someEvent (event);' когда вы вызываете setScene, вы также неявно вызываете paintEvent, но ваш paintEvent ничего не делает в вашем коде, но работает правильно в моем коде. – Chernobyl
Спасибо. Теперь ясно. – Ivan