У меня есть класс, который наследует от QGraphicsView. Я использую QGraphicsScene для отображения изображения в окне.
Здесь все работает правильно.
Однако я хотел бы использовать события мыши QGraphicsSceneMouseEvent для рисования на этом изображении. Проблема в том, что если я использую QGraphicsSceneMouseEvent, я не помещаюсь в методы mousePressEvent и mouseMoveEvent.
Я пытался с событием QMouseEvent *, но у меня нет доступа к lastScenePos (), например.
Вот мой код, который отображает изображение
DisplayImage.h:
class DisplayImage : public QGraphicsView{
Q_OBJECT
public:
DisplayImage(QWidget *parent=0);
void displayImg(const QImage &image);
private:
QGraphicsScene *scene;
QPixmap pixmap;
QGraphicsPixmapItem *pixmapItem;
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
};
DisplayImage.cpp:
DisplayImage::DisplayImage(QWidget* parent) : QGraphicsView(parent){
scene = new QGraphicsScene(this);
pixmapItem=new QGraphicsPixmapItem(pixmap);
scene->addItem(pixmapItem);
this->setScene(scene);
}
void DisplayImage::displayImg(const QImage &image){
pixmap=QPixmap::fromImage(image);
pixmapItem->setPixmap(pixmap);
this->setSceneRect(0,0,image.width(),image.height());
this->fitInView(pixmapItem, Qt::KeepAspectRatio);
this->centerOn(pixmapItem);
}
здесь я хотел бы использовать методы mousePressEvent и mouseMoveEvent с QGraphicsSceneMouseEvent.
У кого-нибудь есть решение, чтобы обойти проблему?