0

我不明白发生了什么:当我直接创建 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);
}

告诉我是否遗漏了什么,提前谢谢。

4

1 回答 1

1

你应该处理你的事件。尝试这个:

void DrawArea::mousePressEvent(QMouseEvent * event)
{
     //some actions
     QGraphicsView::mousePressEvent(event);
}

void DrawArea::paintEvent(QPaintEvent *event)
{
     //some actions
     QGraphicsView::paintEvent(event);
}

另外我认为你根本不需要paintEvent,在场景中做所有需要的事情。

于 2014-11-15T14:09:24.263 回答