1

我遇到的问题似乎与这个(未回答的)问题中提出的问题相同:Qt resizeGL 问题

我正在QGLWidget为更大的应用程序测试一个新的。该resizeGL方法被连接以更改glViewport和重新绘制 OpenGL 视图。我的 QGLWidget 不是布局的一部分,只是被创建,显示如下:

boost::shared_ptr<StandardCustomWidgetBuilder>
        builder(new StandardCustomWidgetBuilder());
WaterfallDirector<StandardCustomWidgetBuilder, DataSource> director(builder);
director.construct();
std::unique_ptr<CustomWidget> widget = builder->getWidget();
widget->show();

在我的电脑上,这默认创建一个 640x480 窗口并resizeGL在初始化时调用。每当我调整窗口大小时,resizeGL都不会被调用。

在我试图解决这个问题的过程中,我尝试创建一个单独QWidget的,QVBoxLayout它只包含CustomWidget. 这创建了一个非常小的窗口,所以我修复了我的sizeHintand sizePolicyfor CustomWidget,尽管这仍然对resizeGL调用没有影响。在这一点上,我不确定如何进行。

4

2 回答 2

1

我在同事的帮助下解决了我的问题。事实证明,我已经实现了该event方法并忘记在其中调用该QGLWidget::event方法。小部件现在可以正确调整大小。

于 2011-10-18T16:59:54.743 回答
0

如果您还没有这样做,我建议您检查所有相关小部件的尺寸提示和尺寸政策

例如,以下内容将确保您的小部件在窗口增长时使用可用空间:

widget->setSizePolcy( QSizePolicy::MinimumExpanding,
                      QSizePolicy::MinimumExpanding );

我不认为 QGLWidget 的默认大小策略使它想要扩展,所以我认为这可能需要更改。

于 2011-10-18T04:43:25.773 回答