不能插入已经由另一个QTableWidget拥有的项

Cannot insert an item that is already owned by another QTableWidget

本文关键字:QTableWidget 拥有 另一个 插入 不能      更新时间:2023-10-16

我有QTableWidgetTable的问题,在我运行FindTableItems函数后,它将行/数重置为适当的大小,但不将任何数据放入单元格中。

我可以看到对象持有正确的数据。我没有收到编译错误,但调试器做出注释:

QTableWidget:不能插入已经被另一个QTableWidget拥有的项

我不明白的是我只有一个tablewidget ?那么到底是怎么回事呢?我也愿意用不同的方式来做这件事。

void MainWindow::FindTableItems(QString searchItem)
{
    QList<int> matches;
    QList<QList<QTableWidgetItem*> > allRows;
    QList<QTableWidgetItem*> tempRow;
    QList<QTableWidgetItem *> tempTable = ui->tableWidget->findItems(searchItem,Qt::MatchContains);
    foreach(QTableWidgetItem *rowPtr,tempTable)
    {
    int currentRow = rowPtr->row();
    matches.append(currentRow);
    }
    for(int i = 0; i < ui->tableWidget->rowCount(); ++i)
    {
        if(matches.contains(i))
        {
            QTableWidgetItem *tempCaseNameItem = new QTableWidgetItem;
            QTableWidgetItem *tempInterviewNameItem = new QTableWidgetItem;
            QTableWidgetItem *tempInterviewerNameItem = new QTableWidgetItem;
            QTableWidgetItem *tempIntervieweeNameItem = new QTableWidgetItem;
            QTableWidgetItem *tempObserverNameItem = new QTableWidgetItem;
            QTableWidgetItem *tempDateItem = new QTableWidgetItem;
            tempCaseNameItem->setText(ui->tableWidget->item(i,0)->text());
            tempRow.append(tempCaseNameItem);
            tempInterviewNameItem->setText(ui->tableWidget->item(i,1)->text());
            tempRow.append(tempInterviewNameItem);
            tempInterviewerNameItem->setText(ui->tableWidget->item(i,2)->text());
            tempRow.append(tempInterviewerNameItem);
            tempIntervieweeNameItem->setText(ui->tableWidget->item(i,3)->text());
            tempRow.append(tempIntervieweeNameItem);
            tempObserverNameItem->setText(ui->tableWidget->item(i,4)->text());
            tempRow.append(tempObserverNameItem);
            tempDateItem->setText(ui->tableWidget->item(i,5)->text());
            tempRow.append(tempDateItem);
            allRows.append(tempRow);
        }
    }
    ui->tableWidget->setRowCount(0);
    foreach(QList<QTableWidgetItem*> rowItems, allRows)
    {
        int row = ui->tableWidget->rowCount();
        ui->tableWidget->insertRow(row);
        foreach(QTableWidgetItem *rowItem, rowItems)
        {
            for(int i = 0; i < 6; ++i)
            {
                ui->tableWidget->setItem(row, i, rowItem);
               // ui->tableWidget->item(row, i)->setTextAlignment(Qt::AlignVCenter);
            }
        }
    }
}

我有一个坏的for循环,在底部,对不起,我们应该更注意