view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height());设置完scene的大小还是0
时间: 2024-02-23 20:02:13 浏览: 14
如果调用`view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height())`之后,scene的大小仍然为0,可能是因为此时QGraphicsView还没有被添加到任何父窗口中。如果QGraphicsView没有被添加到父窗口中,它的大小会被设置为0,因此QGraphicsScene的大小也会为0。
可以尝试将QGraphicsView添加到一个父窗口中,或者手动设置QGraphicsView的大小,例如:
```
QGraphicsView *view = new QGraphicsView;
QGraphicsScene *scene = new QGraphicsScene;
view->setScene(scene);
view->resize(400, 300); // 手动设置QGraphicsView的大小
view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height());
```
这里手动设置了QGraphicsView的大小为400x300,然后再调用`setSceneRect()`函数设置QGraphicsScene的大小,这样应该可以使QGraphicsScene自适应QGraphicsView的大小。
相关问题
QGraphicsView有大小 view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height());设置完scene的大小还是0
如果你调用了`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()`函数。
QGraphicsScene对象自适应QGraphicsView的大小
要使QGraphicsScene对象自适应QGraphicsView的大小,可以使用QGraphicsView的setSceneRect()函数来设置QGraphicsScene的矩形大小,使其与QGraphicsView的大小一致。可以在QGraphicsView对象创建后,调用setSceneRect()函数进行设置,如下所示:
```
QGraphicsView *view = new QGraphicsView;
QGraphicsScene *scene = new QGraphicsScene;
view->setScene(scene);
view->setSceneRect(0, 0, view->frameSize().width(), view->frameSize().height());
```
这里的setSceneRect()函数设置了QGraphicsScene的矩形大小为QGraphicsView的大小。需要注意的是,如果QGraphicsView的大小发生变化,需要重新设置QGraphicsScene的矩形大小以使之自适应。