Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用qgraphicsview和QGraphicscene和qopenglwidget自动调整大小_Qt_Opengl_Qgraphicsview - Fatal编程技术网

Qt 使用qgraphicsview和QGraphicscene和qopenglwidget自动调整大小

Qt 使用qgraphicsview和QGraphicscene和qopenglwidget自动调整大小,qt,opengl,qgraphicsview,Qt,Opengl,Qgraphicsview,我正在尝试在主窗口中将QGraphicsView与QOpenGLWidget一起使用: 确切地: 我的QMainWindow包含一些布局和小部件。还有一个QGraphicsView(graphicsView类继承自QGraphicsView) 在“第二步”中,我创建一个QGraphicscene并添加一个openglwidget(OpenGLControl类继承自QOpenGLWidget)。在OpenGLControl中,我只为测试我的应用程序设置了回溯(glClearColor…) 现在我的

我正在尝试在主窗口中将QGraphicsView与QOpenGLWidget一起使用: 确切地: 我的QMainWindow包含一些布局和小部件。还有一个QGraphicsView(graphicsView类继承自QGraphicsView)

在“第二步”中,我创建一个QGraphicscene并添加一个openglwidget(OpenGLControl类继承自QOpenGLWidget)。在OpenGLControl中,我只为测试我的应用程序设置了回溯(glClearColor…)

现在我的请求是,当我更改主窗口的大小时,我也想更改QGraphicsView、Qgraphicscene和QOpenGLWidget的大小。我在graphicsView中尝试了resizeEvent,但没有成功

主窗口(.cpp)的实现:

以及我对resizeEvent的尝试:

void graphicsView::resizeEvent(QResizeEvent *event)
{
if(scene())
    scene()->setSceneRect(QRect(QPoint(0,0), event->size()));
QGraphicsView::resizeEvent(event);
}
最后,主窗口(调整大小)的屏幕截图(QOpenGLWidget(蓝色背景)比QGraphicsView小)

有我可以使用的信号吗?或者有人能帮我另一个方法吗?
谢谢你

如果你认为代码> QGraphicsScene <代码>是一个世界,其中对象(<代码> qGraceSITEM> <代码> qGrICICS对象< /代码>)驻留,<代码> qGraceCsVIEW/COD>是进入那个世界的窗口,为什么你要调整场景的大小?这在逻辑上是没有意义的。我解决了这个问题:一方面,我向graphicsView sizeChanged事件添加了一个改变OpenGLWidget的信号。另一方面,Graphicscene的大小随着GraphicsView的增加而增加,但从不缩小。所以我也需要在szene的de graphicsView sizeChanged事件中发出信号。
void graphicsView::resizeEvent(QResizeEvent *event)
{
if(scene())
    scene()->setSceneRect(QRect(QPoint(0,0), event->size()));
QGraphicsView::resizeEvent(event);
}