QGraphiceView自适应QVBoxLayout大小
时间: 2023-07-18 07:18:21 浏览: 101
QGraphicsView QGraphics 窗口自适应
如果你想让`QGraphicsView`自适应`QVBoxLayout`的大小,可以在`QVBoxLayout`的`resizeEvent()`函数中设置`QGraphicsView`的大小,并设置`QGraphicsScene`的大小为`QGraphicsView`的大小。
以下是一个示例代码:
```cpp
void MyWidget::resizeEvent(QResizeEvent *event)
{
QVBoxLayout::resizeEvent(event);
int width = this->width(); // 获取QVBoxLayout的宽度
int height = this->height(); // 获取QVBoxLayout的高度
graphicsView->setFixedSize(width, height); // 设置QGraphicsView的大小
graphicsScene->setSceneRect(0, 0, width, height); // 设置QGraphicsScene的大小为QGraphicsView的大小
}
```
在这个示例代码中,我们自定义了一个`MyWidget`类,继承了`QVBoxLayout`,重载了`resizeEvent()`函数。在`resizeEvent()`函数中,我们首先调用了`QVBoxLayout`的`resizeEvent()`函数,确保`QVBoxLayout`的大小已经被正确设置。然后,我们根据`QVBoxLayout`的大小设置了`QGraphicsView`的大小,并将`QGraphicsScene`的大小设置为`QGraphicsView`的大小。
需要注意的是,这里的`graphicsView`和`graphicsScene`分别是`QGraphicsView`和`QGraphicsScene`对象,需要在`MyWidget`的构造函数中被创建和添加到`QVBoxLayout`中。同时,在`resizeEvent()`函数中,需要检查`graphicsView`和`graphicsScene`是否为空,如果为空需要先创建它们。
阅读全文