首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGraphicsView问题

QGraphicsView问题
EN

Stack Overflow用户
提问于 2014-11-15 14:05:03
回答 1查看 166关注 0票数 0

我不明白发生了什么:当我直接创建QGraphicsView对象并添加一个像素地图的场景时,一切正常,像素地图出现在屏幕上:

代码语言:javascript
复制
scene.addPixmap(pix);
QGraphicsView graphicsView;
graphicsView.setScene(&scene);

但是,当我试图继承QGraphicsView类以重新实现事件时,什么事情都没有发生,没有像素映射,我得到了白色屏幕,但是像更改光标这样的事件是有效的:

代码语言:javascript
复制
scene.addPixmap(pix);
DrawArea graphicsView;
graphicsView.setScene(&scene);

.h文件:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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);
}

如果有什么遗漏了,请提前告诉我,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-15 14:09:24

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

代码语言:javascript
复制
void DrawArea::mousePressEvent(QMouseEvent * event)
{
     //some actions
     QGraphicsView::mousePressEvent(event);
}

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26946651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档