В моем объекте я отображаю файл журнала в виджете QTextEdit. Затем я обнаружил, что программа потребляет сотни МБ памяти, даже если размер файла журнала невелик. И память не освобождается, когда ее содержимое очищается.
Затем я пишу небольшую демонстрацию в QtCreator с Qt5.12.x, просто помещаю на нее виджет QTextEdit. вызовите функцию добавления, чтобы внедрить в нее QString, проблема повторяется, даже если я удаляю виджет QTextEdit.
MainWindow::MainWindow(QWidget *parent)
{
QPushButton *btn1 = new QPushButton(this) ;
QPushButton *btn2 = new QPushButton(this) ;
txtEdit = new QTextEdit(this) ;
QHBoxLayout *layout = new QHBoxLayout ;
layout->addWidget( btn1 ) ;
layout->addWidget( btn2 ) ;
layout->addWidget(txtEdit ) ;
QWidget *widget = new QWidget;
widget->setLayout(layout);
setCentralWidget(widget);
connect( btn1 , SIGNAL( clicked( ) ) , this , SLOT( setdata( ) ) ) ;
connect( btn2 , SIGNAL( clicked( ) ) , this , SLOT( cleardata( ) ) ) ;
}
void MainWindow::setdata( )
{
for ( int ii = 0 ; ii < 50 ; ii++ )
{
for ( int i = 0 ; i < 500 ; i++ )
{
QString str ;
for ( int j = 0 ; j < 100 ; j++ )
{
str = str+ QString::number( j ) ;
}
txtEdit->append( str ) ;
}
}
}
void MainWindow::cleardata( )
{
txtEdit->clear() ;
//txtEdit->close( ) ;
//delete txtEdit ;
}