【发布时间】:2018-07-03 10:05:02
【问题描述】:
我有一个继承自 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 一起使用。 有没有人可以解决这个问题?
【问题讨论】:
标签: c++ qt qt5 qgraphicsview qgraphicsscene