调用fitInView时调用ResizeEvent(QGraphicsScene)

时间:2016-06-09 12:23:25

标签: qgraphicsview

我有这个奇怪的问题。

我在QGraphicsView扩展类中创建我的场景,如下所示:

scene = new QGraphicsScene(this);
this->setScene(scene);
this->setAlignment(Qt::AlignTop|Qt::AlignLeft);
showRect.setCoords(0,0,sceneWidth,sceneHeight);

然而。同一个类根据文档重新实现了resizeEvent方法:

void ConversationView::resizeEvent(QResizeEvent *e){
    //Q_UNUSED(e);
    this->fitInView(showRect,Qt::KeepAspectRatioByExpanding);
    qWarning() << e->size();
}

现在我在场景中添加了一个框,但没有任何反应。但是,当我开始调整窗口大小时,有一个点我停下来并且程序挂起,我一直在查看大小调整消息,永远和永远,并且其大小的变化非常小:

QSize(1342, 190) 
QSize(1356, 190) 
QSize(1342, 190) 
QSize(1356, 190)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。我没有重新定义ConversationView的resize事件(从QGraphicsView扩展),而是重新定义了包含Widget的resizeEvent(在这种情况下是一个基于QDialog的类)。

使用完全相同的参数,这会使问题消失。