0

我想将 OpenGLWidget 添加到布局中,当我的工作完成后,我想清理有关 OpenGLWidget 的所有内容,但是当我打开小部件并使用Qt::WA_DeleteOnClose属性关闭时,内存并没有完全释放。这是正常的还是我不知道正确的用法。我阅读了文档(https://doc.qt.io/qt-5/qopenglwidget.html)并尝试了所有方法,但是在创建小部件并在它们之后关闭时,我无法从内存中删除 40 mb 分配。关闭和删除操作后只需删除 3-4 mb。我将把它用于另一个项目。(我必须打开 OpenGLWidget,显示一些三角形并关闭 Widget。

我尝试使用 makeCurrent() 和 doneCurrent()、deleteLater() 以及更多操作,但它不起作用。

#include "MainWindow.h"
#include "ui_MainWindow.h"
#include<QOpenGLWidget>

QOpenGLWidget *openglWidget;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    openglWidget = new QOpenGLWidget;
    openglWidget->setAttribute(Qt::WA_DeleteOnClose);
    ui->gridLayout->addWidget(openglWidget);
}

void MainWindow::on_pushButton_2_clicked()
{
    ui->gridLayout->removeWidget(openglWidget);
    openglWidget->close();
    delete openglWidget;
}
4

0 回答 0