简体   繁体   English

QGraphicsView问题

[英]QGraphicsView issue

I dont understand what`s going on: when i create QGraphicsView object directly and adding scene with a pixmap, all is ok, pixmap appears on the screen: 我不明白这是怎么回事:当我直接创建QGraphicsView对象并添加带有像素图的场景时,一切正常,像素图出现在屏幕上:

scene.addPixmap(pix);
QGraphicsView graphicsView;
graphicsView.setScene(&scene);

But when i try to inherit QGraphicsView class with purpose of reimplementing events, nothing happend and i got white screen without pixmap, but events like changing cursor is working: 但是,当我尝试继承QGraphicsView类以重新实现事件的目的时,什么也没有发生,并且我得到了没有pixmap的白屏,但​​是诸如更改光标之类的事件仍在起作用:

scene.addPixmap(pix);
DrawArea graphicsView;
graphicsView.setScene(&scene);

.h file: .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 file: .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);
}

Tell me if something missed, Thanks in advance. 告诉我是否有遗漏,谢谢。

You should process your events. 您应该处理事件。 Try this: 尝试这个:

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

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

Also I think that you don't need paintEvent at all, do all needed things in the scene. 我也认为您根本不需要paintEvent ,只需执行场景中所有需要的事情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM