我遇到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)
我有一个糟糕的循环,在底部,抱歉应该得到更多关注