新的 QOpenGLWidget window
QOpenGLWidget in new window
我有一个带按钮的简单 UI,按下按钮后我应该打开一个新的 window,其中应该绘制 OpenGL 内容。我正在尝试使用 QOpenGLWidget 但是从未调用 InitializeGL() 和 paintGL() 函数。
所以基本上我的 main 有一个应该启动一切的函数:
void test::displayOpenGLObjects
{
newOpenGLContext = std::make_unique<Visualization_OpenGL>(this);
}
Visualization_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(){
...
}
和 header:
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;
};
我看过的例子都是在mainwindow上绘制所有内容,当我这样做时,确实调用了paintGL()和initializeGL(),但我需要有一个单独的window 为此,我猜我的问题与 QOpenGLWidget *test_window = new QOpenGLWidget();
有关,但我不确定如何解决。我对此非常陌生,所以如果这是一个超级菜鸟问题,我很抱歉,但我们将不胜感激。
在另一个小部件的构造函数中打开一个小部件很奇怪。您可以在按钮点击槽中创建一个新的小部件。例如:
void MainWindow::OnButtonClicked()
{
Visualization_OpenGL* test_window = new Visualization_OpenGL();
test_window->setWindowTitle("OpenGL Visualization");
test_window->makeCurrent();
test_window->show();
}
然后 Visualization_OpenGL::initializeGL
、Visualization_OpenGL::resizeGL
和 Visualization_OpenGL::paintGL
将被调用。
我有一个带按钮的简单 UI,按下按钮后我应该打开一个新的 window,其中应该绘制 OpenGL 内容。我正在尝试使用 QOpenGLWidget 但是从未调用 InitializeGL() 和 paintGL() 函数。
所以基本上我的 main 有一个应该启动一切的函数:
void test::displayOpenGLObjects
{
newOpenGLContext = std::make_unique<Visualization_OpenGL>(this);
}
Visualization_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(){
...
}
和 header:
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;
};
我看过的例子都是在mainwindow上绘制所有内容,当我这样做时,确实调用了paintGL()和initializeGL(),但我需要有一个单独的window 为此,我猜我的问题与 QOpenGLWidget *test_window = new QOpenGLWidget();
有关,但我不确定如何解决。我对此非常陌生,所以如果这是一个超级菜鸟问题,我很抱歉,但我们将不胜感激。
在另一个小部件的构造函数中打开一个小部件很奇怪。您可以在按钮点击槽中创建一个新的小部件。例如:
void MainWindow::OnButtonClicked()
{
Visualization_OpenGL* test_window = new Visualization_OpenGL();
test_window->setWindowTitle("OpenGL Visualization");
test_window->makeCurrent();
test_window->show();
}
然后 Visualization_OpenGL::initializeGL
、Visualization_OpenGL::resizeGL
和 Visualization_OpenGL::paintGL
将被调用。