我想将 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;
}