0

最初はhttp://qt-project.org/wiki/How_to_use_OpenGL_Core_Profile_with_Qtの構造に従いました。バニラの Visual Studio 2010 Qt アプリケーション プロジェクトを作成し、.ui ファイルをクリックして Qt Designer を起動し、QWidget を挿入して myglwidget に昇格させました。次に、QGLWidget の myglwidget サブクラスを作成しました。

それはうまくいき、赤い三角形ができました。

問題は、メイン ウィンドウのサイズが変更されたときに、ウィジェットのサイズ プロパティを「拡張」に設定しても、myglwidget がサイズ変更イベントをまったく取得しないことです。

アプリのコンストラクターを再構築して setCentralWidget(&myglwidget_) を呼び出すと、コードはコンパイルおよび実行されますが、OpenGL ウィンドウは表示されません。

メイン ウィンドウのサイズに合わせてウィジェットのサイズを変更する方法がわかりません。setCentralWidget アプローチが機能しなかった理由も理解できません。

明示的な Qt コードを記述することで問題を解決する方法を知っていると思いますが、Qt Designer を使用して Qt で OpenGL アプリを構築しようとする目的が無効になります。

4

1 に答える 1

0

アプリケーション「baz6」の次のコードは、問題を修正します。ウィザードで生成されたコードに挿入したコードには、次のフラグが付けられています//***

baz6.h:

#ifndef BAZ6_H
#define BAZ6_H

#include <QtGui/QMainWindow>
#include "ui_baz6.h"
#include "myglwidget.h"        //***

#include <QResizeEvent>

class baz6 : public QMainWindow
{
    Q_OBJECT

public:
    baz6(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~baz6();

private:
    Ui::baz6Class ui;
    myGLWidget *myglwidget_;      //***
};

#endif // BAZ6_H

baz6.c:

#include "baz6.h"
#include "myglwidget.h"

baz6::baz6(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);

    myglwidget_ = new myGLWidget();      //***
    setCentralWidget(myglwidget_);       //***
}

baz6::~baz6()
{

}

以前は、myGLWidget を明示的に構築していませんでした。

于 2012-06-26T10:10:43.130 に答える