最初,我遵循http://qt-project.org/wiki/How_to_use_OpenGL_Core_Profile_with_Qt的结构。我创建了一个vanilla Visual Studio 2010 Qt应用程序项目,单击.ui文件启动Qt Designer,插入一个QWidget并将其提升为myglwidget。然后我创建了一个QGLWidget的myglwidget子类。
工作得很好,我得到了红色三角形。
问题是,即使我将窗口小部件大小属性设置为“扩展”,myglwidget也不会在调整主窗口大小时获得任何调整大小事件。
当我重构我的app构造函数以调用setCentralWidget(& myglwidget_)时,代码会编译并运行,但不会出现OpenGL窗口。
我没有看到如何调整窗口小部件的大小以匹配主窗口大小。我也不明白为什么setCentralWidget方法不起作用。
我相信我知道如何通过编写显式Qt代码来解决问题,但这无法实现我尝试使用Qt Designer在Qt中构建OpenGL应用程序的目的。
答案 0 :(得分: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。