我有两个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);
}
我做错了什么?
答案 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();