在QTableWidget中获取和设置数据的问题

时间:2011-10-28 21:50:18

标签: qt qtablewidget qtablewidgetitem

我有两个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);
}

我做错了什么?

1 个答案:

答案 0 :(得分: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();