我不明白发生了什么:当我直接创建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);
}如果有什么遗漏了,请提前告诉我,谢谢。
发布于 2014-11-15 14:09:24
你应该处理你的事情。试试这个:
void DrawArea::mousePressEvent(QMouseEvent * event)
{
//some actions
QGraphicsView::mousePressEvent(event);
}
void DrawArea::paintEvent(QPaintEvent *event)
{
//some actions
QGraphicsView::paintEvent(event);
}另外,我认为你根本不需要paintEvent,在场景中做所有需要的事情。
https://stackoverflow.com/questions/26946651
复制相似问题