2

QMainWindow を持つアプリケーションがあり、理想的には QGLWidget を中央に配置し、ツールバーやその他のトップ/サイド ウィジェット用に外側にスペースを残します。

残念ながら、QGLWidget がどのようなサイズまたはジオメトリに設定されていても、巨大に見え、メイン ウィンドウ全体を占有します。

基本的に、セットアップは次のとおりです。 CreateWindow() は main() で呼び出され、メイン ウィンドウを構築し、GLWidget を構築する関数 Init() を呼び出します。したがって、適応したメイン ウィンドウ クラスのメンバーである Init() 内には、基本的に次のものがあります。

GLScene = new MyQGLWidget(this);  
setCentralWidget(GLScene); 

ここで、GLScene を目的のサイズと位置に合わせるために、まず GLWidget (GLWidget から直接派生した私のクラス) コンストラクター内でジオメトリを設定しようとしました。

MyQGLWidget::MyQGLWidget(QWidget* parent){
    ....
    setGeometry(210, 40, 600, 400);  //the main window is of course bigger and should fit this nicely 
    ....
}

ただし、これはまったく機能せず、メイン ウィンドウ全体を占有していました。代わりに、setGeometry 呼び出しを Init() に入れてみました。setCentralWidget(); の直前と直後の両方で試しました。どちらのオプションも機能しませんでした。また、setCentralWidget 呼び出しを完全に削除することもできませんでした (実際、これにより GLWidget が消えました)。

これは明らかに適切に機能していないため、GLWidget をスケーリングする正しい方法は何ですか? それとも、もっと深く調べる必要があるのは、物事がどのように順序付けられているかだけの問題ですか?

4

1 に答える 1

2

それにレイアウトを追加する必要があります。親がサイズ変更関数を呼び出すまったく同じもの (QGLWidget から派生したウィジェット) があります。これですべての問題が解決し、実行時にサイズを変更できるようになりました。

于 2012-08-28T01:00:15.950 に答える