1

この(未回答の)質問で尋ねられたのと同じ問題のように見えるものがあります:Qt resizeGLの問題

大規模なアプリケーション用に新しいものをテストしてQGLWidgetいます。このメソッドは、OpenGL ビューresizeGLを変更して再描画するように配線されています。glViewport私の 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ものを作成しようとしました。これにより非常に小さなウィンドウが作成されたので、とforを修正しましたが、呼び出しには影響しませんでした。この時点で、どのように進めればよいか正確にはわかりません。QVBoxLayoutCustomWidgetsizeHintsizePolicyCustomWidgetresizeGL

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 に答える