0

退出和清除 QTreeWidget 时,我的应用程序因 BAD_ACCESS 而崩溃。

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

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);
}

我相信标题项导致崩溃:

ui->resultTreeView->setHeaderItem(new QTreeWidgetItem(ui->resultTreeView, QStringList(headers)));

我在做什么导致这次崩溃?动态分配的项目将树小部件作为它的父级,因此它应该只在树小部件存在时被销毁。

4

1 回答 1

0

看来我设置标题的方式错误。

这工作正常:

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

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

现在,我不知道setHeaderItem应该做什么以及为什么它会导致我的应用程序崩溃,但上面的代码达到了预期的效果。

于 2011-05-25T07:06:51.397 回答