Невозможно вставить элемент, который уже принадлежит другому QTableWidget

У меня проблемы с QTableWidgetTable, после запуска функции FindTableItems она сбрасывает строки / число до соответствующего размера, но не помещает никаких данных в ячейки.

Я вижу, что объекты содержат правильные данные. Я не получаю ошибок компиляции, но отладчик делает примечание:

QTableWidget: не может вставить элемент, который уже принадлежит другому QTableWidget

Чего я не понимаю, так это того, что у меня есть только один табличный виджет? так в чем же дело? Я также открыт для другого способа сделать это.

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

0

Решение

У меня был плохой цикл, внизу, извините, следовало обратить больше внимания

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]