0

我有两个 QTableWidgets,我正在尝试将它们同步,以了解如何获取/设置数据。

我目前的代码是:

void MainWindow::on_tableWidget_2_cellChanged(int row, int column)
{
    double value = ui->tableWidget_2->itemAt(row,column)->text().toDouble();
    ui->tableWidget->itemAt(row,column)->setData(Qt::UserRole, value);
}

我也试过:

void MainWindow::on_tableWidget_2_cellChanged(int row, int column)
{
    QString value = ui->tableWidget_2->itemAt(row,column)->text();
    ui->tableWidget->itemAt(row,column)->setText(value);
}

不管怎样,从 QTableWidgetItem::text() 返回的 QString 都是一个空字符串。无论在我尝试编辑之前是否有任何文本,都会发生这种情况。

不确定它是否重要,但这就是我初始化表的方式:

QTableWidgetItem * tableItem;
for(int i = 0; i < 5; i++)
{
ui->tableWidget->insertRow(i);
ui->tableWidget_2->insertRow(i);

tableItem = new QTableWidgetItem();
ui->tableWidget->setItem(i,0,tableItem);
tableItem = new QTableWidgetItem();
ui->tableWidget->setItem(i,1,tableItem);

tableItem = new QTableWidgetItem();
ui->tableWidget_2->setItem(i,0,tableItem);
tableItem = new QTableWidgetItem();
ui->tableWidget_2->setItem(i,1,tableItem);
}

我究竟做错了什么?

4

1 回答 1

1

void QTableWidgetItem::setData ( int role, const QVariant & value )

你也许应该这样尝试:

ui->tableWidget->itemAt(row,column)->setData(Qt::UserRole, QVariant(value));

并使用这样的方式取回数据:

ui->tableWidget->itemAt(row,column)->data().toReal();
于 2011-10-29T04:11:39.287 回答