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 に答える