我的应用程序在退出和清除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)));
我在做什么导致这次崩溃?动态分配的项目具有树小部件作为其父级,因此只应在树小部件被销毁时销毁它。
答案 0 :(得分:0)
我似乎错误地设置了标题。
这很好用:
QList<QString> headers;
headers.append(tr("Url"));
headers.append(tr("Message"));
headers.append(tr("Status code"));
ui->resultTreeView->setHeaderLabels(QStringList(headers));
现在, setHeaderItem 应该做什么以及为什么它崩溃我的应用程序我不知道,但上面的代码达到了预期的效果。