QGraphicsView有大小 view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height());设置完scene的大小还是0
时间: 2024-02-23 08:02:15 浏览: 126
如何使QGraphicsItem不随QGraphicsView放大缩小而改变大小
3星 · 编辑精心推荐
如果你调用了`view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height())`之后,QGraphicsScene的大小仍然为0,那么可能是因为此时QGraphicsView还没有完成布局,或者还没有被添加到父控件中。
在使用QGraphicsView时,建议在QGraphicsView完成布局后再调用`setSceneRect()`函数。可以在QGraphicsView的resizeEvent()函数中调用`setSceneRect()`函数,确保QGraphicsView的大小已经被正确设置。示例代码如下:
```
void MyGraphicsView::resizeEvent(QResizeEvent *event)
{
QGraphicsView::resizeEvent(event);
this->setSceneRect(QRect(QPoint(0, 0), event->size()));
}
```
这里我们自定义了一个MyGraphicsView类,重载了QGraphicsView的resizeEvent()函数。在resizeEvent()函数中,我们首先调用了QGraphicsView的resizeEvent()函数,确保QGraphicsView的大小已经被正确设置。然后,我们调用`setSceneRect()`函数,设置QGraphicsScene的大小为QGraphicsView的大小。这样就可以确保QGraphicsScene的大小和QGraphicsView的大小一致了。
另外,如果QGraphicsView还没有被添加到父控件中,那么它的大小也可能会为0。在这种情况下,我们需要先将QGraphicsView添加到父控件中,然后再调用`setSceneRect()`函数。
阅读全文