2011-10-28 23 views
0

私は2つのQTableWidgetsを持っていますが、データを取得/設定する方法を理解するための練習としてそれらを同期しようとしています。 () QTableWidgetsでデータを取得および設定する際の問題

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); 
} 

は何があって、QStringのはQTableWidgetItemから返されません::テキストを空の文字列です:私も試してみました

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); 
} 

私が持っている現在のコードです。これは、編集を試みる前にテキストがあったかどうかにかかわらず発生します。

ないことが重要かどうかわからが、これは、私は、テーブルを初期化する方法である:

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

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

と、次のように使用してデータを取り戻します起動時に文字列 "8"を返します。今、私はいつも "8"のセルから値を取得しますが、他のtableWidgetの値を設定することは何もしません。 – Ash

答えて

1

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

あなたは多分このように試してみてください:tableWidget_2内の各セルが含まれているので、私は初期化コードを変更し

ui->tableWidget->itemAt(row,column)->data().toReal(); 
+0

QTableWidgetItem :: data(..)はロールのためにintを取るので、Qt :: UserRoleを呼び出したところです。データを取得するたびに、0として出力されます。設定すると、何も変わりません。 – Ash

+0

getterとsetterの両方で "Qt :: DisplayRole"の役割を変更すると機能します。 – Ash

+0

誤解を招いて申し訳ありません...あなたがうまく動作してうれしいです^^ – liuyanghejerry

関連する問題