LINUX.ORG.RU

[Qt] QTableWidgetItem, утечка памяти.

 


0

1

Есть вот такой код:

void AllRoots::setAllRoots(QTableWidget* view) {
    QSqlDatabase db = getDatabase();
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setHostName("localhost");
    db.setPassword("123456");
    if (!db.open()) {
        qDebug() << "Error";
    }

    QSqlQuery query;
    if (!query.exec("select * from table1")) {
        qDebug() << "Error select";
    }

    QString id1, id2,text1, text2, text3;

    QSqlRecord rec = query.record();

    view->setRowCount(rec.count());

    uint i = 0;
    while(query.next()) {
        id1 = query.value(rec.indexOf("id1")).toString();
        id2 = query.value(rec.indexOf("id2")).toString();
        text1 = query.value(rec.indexOf("text1")).toString();
        text2 = query.value(rec.indexOf("text2")).toString();
        text3 = query.value(rec.indexOf("text3")).toString();

        view->setItem(i, 0, new QTableWidgetItem(id1));
        view->setItem(i, 1, new QTableWidgetItem(id2));
        view->setItem(i, 2, new QTableWidgetItem(text1));
        view->setItem(i, 3, new QTableWidgetItem(text2));
        view->setItem(i, 4, new QTableWidgetItem(text3));

        i++;
    }
}

Проблема в том, что при уничтожении в деструктуре QTableWidget не уничтожаются QTableWidgetItem и соответственно идёт утечка памяти. Вопрос, как сделать чтобыпри удалении QTableWidget удалялись автоматом QTableWidgetItem?

смартпоинтеры заюзать

yoghurt ★★★★★
()

>при уничтожении в деструктуре QTableWidget не уничтожаются QTableWidgetItem

Их, в своём деструкторе, уничтожает модель принадлежащая QTableWidget.

summatus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.