C++ 清除QTreeWidget时应用程序崩溃

C++ 清除QTreeWidget时应用程序崩溃,c++,qt,qtreewidget,C++,Qt,Qtreewidget,退出和清除QTreeWidget时,我的应用程序因访问错误而崩溃 这是我填充树的第一级的方式: std::set<UrlItem>::iterator i; for(i = crawler->getUrls()->begin() ; i != crawler->getUrls()->end() ; i++) { QList<QString> cells; cells.append(i->url); cells.app

退出和清除QTreeWidget时,我的应用程序因访问错误而崩溃

这是我填充树的第一级的方式:

std::set<UrlItem>::iterator i;

for(i = crawler->getUrls()->begin() ; i != crawler->getUrls()->end() ; i++) {
    QList<QString> cells;
    cells.append(i->url);
    cells.append(i->httpStatusMessage);
    cells.append(QString("%1").arg(i->statusCode));

    QTreeWidgetItem *item = new QTreeWidgetItem(ui->resultTreeView, QStringList(cells));

    ui->resultTreeView->addTopLevelItem(item);
}

我是怎么造成这次车祸的?动态分配的项将树小部件作为其父项,因此只有在树小部件处于活动状态时才应销毁它。

似乎我将标题设置为错误的方式

这很好:

QList<QString> headers;
headers.append(tr("Url"));
headers.append(tr("Message"));
headers.append(tr("Status code"));

ui->resultTreeView->setHeaderLabels(QStringList(headers));
现在,我不知道setHeaderItem应该做什么,为什么它会使我的应用程序崩溃,但上面的代码达到了预期的效果。

您可以使用QStringList头;标题
QList<QString> headers;
headers.append(tr("Url"));
headers.append(tr("Message"));
headers.append(tr("Status code"));

ui->resultTreeView->setHeaderLabels(QStringList(headers));