2012-06-26 91 views
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子類。如何將QMainWindow調整大小事件傳遞給包含在QMainWindow中的QGLWidget?

工作正常,我得到了我的紅色三角形。

問題是,當主窗口調整大小時,myglwidget沒有得到任何調整大小事件,即使我將小部件大小屬性設置爲「擴大」。

當我調整我的應用構造函數調用setCentralWidget(& myglwidget_)時,代碼會編譯並運行,但不會顯示OpenGL窗口。

我看不到如何調整我的小部件的大小以匹配主窗口大小。我也不明白爲什麼setCentralWidget方法不起作用。

我相信我知道如何通過編寫明確的Qt代碼來解決問題,但是這打破了我試圖在Qt中使用Qt Designer構建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。

相關問題