2012-06-26 3 views
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 하위 클래스를 만들었습니다.QMainWindow 크기 조정 이벤트를 QMainWindow에 포함 된 QGLWidget으로 전달하는 방법은 무엇입니까?

잘 작동하고 빨간색 삼각형이 나타납니다.

위젯 크기 속성을 "확장"으로 설정하더라도 주 창 크기를 조정할 때 myglwidget에서 크기 조정 이벤트가 발생하지 않는 것이 문제입니다.

그리고 setCentralWidget (& myglwidget_)을 호출하도록 애플리케이션 생성자를 재구성하면 코드가 컴파일되고 실행되지만 OpenGL 창이 표시되지 않습니다.

기본 창 크기와 일치하도록 위젯의 크기를 조정하는 방법이 표시되지 않습니다. 또한 setCentralWidget 접근 방식이 작동하지 않는 이유를 이해하지 못합니다.

나는 명백한 Qt 코드를 작성하여이 문제를 해결하는 방법을 알고 있지만 Qt Designer를 사용하여 Qt에서 OpenGL 응용 프로그램을 빌드하려는 목적을 이길 수 없다고 생각합니다.

답변

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을 구축하지 않았다.