0

私は 2 つの 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 に答える