0

最初,我遵循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 不会收到任何调整大小事件,即使我将小部件大小属性设置为“扩展”也是如此。

当我重构我的应用程序构造函数以调用 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 回答