我有一个带有按钮的简单 UI,按下按钮后我应该打开一个新窗口,应该在其中绘制 OpenGL 的东西。我正在尝试使用 QOpenGLWidget 执行此操作,但从不调用 InitializeGL() 和 paintGL() 函数。
所以基本上我的 main 有一个应该启动一切的函数:
void test::displayOpenGLObjects
{
newOpenGLContext = std::make_unique<Visualization_OpenGL>(this);
}
可视化_OpenGL.cpp
test::Visualization_OpenGL(QWidget *parent): QOpenGLWidget(parent)
{
QOpenGLWidget *test_window = new QOpenGLWidget();
test_window->setWindowTitle("OpenGL Visualization");
test_window->makeCurrent();
test_window->show();
}
test::initializeGL(){
...
}
test::paintGL(){
...
}
test::resizeGL(){
...
}
和标题:
class Visualization_OpenGL : public QOpenGLWidget, public QOpenGLFunctions
{
Q_OBJECT
public:
Visualization_OpenGL(QWidget *parent);
~Visualization_OpenGL();
protected:
void initializeGL() override;
void resizeGL(int w, int h) override;
void paintGL() override;
};
我见过的例子都在主窗口上绘制所有内容,当我这样做时,确实调用了paintGL()和initializeGL(),但我需要为此设置一个单独的窗口,我猜我的问题是涉及到的东西,QOpenGLWidget *test_window = new QOpenGLWidget();
但我不知道如何解决。我对此非常陌生,所以如果这是一个超级菜鸟问题,我很抱歉,但任何帮助将不胜感激。