2012-01-10 10 views
0

私は学生プログラマーであり、私の会社のQtでGUIを構築しています。私は基本的に私のUi要素とメンバー変数の間の仲介者として動作するようにメンバー関数SetDataを書いています。この特定のUiでは、QTableWidgeを使用しています。私は正確に各列を変数に設定する方法を見つけることができないようです。QTableWidget Columsのアドレス指定

たとえば、QTableWidgetに列Nameがあり、Nameが最初の列の場合、従来の配列パラメーターを使用してアクセスできません。 Qtのdocumentationは本当にこの問題に対処する方法としてはあまりにも面倒です。クラスのメンバ関数を使って私がここで望む結果を得る方法を理解するには、あまりにも素人です。

明確にするために、私は列全体のデータ型を定義しようとしています。たとえば私の最初の列。名前は、QStringデータ型で作成した変数です。 SetDataは最終的にQVectorまたはQListに渡します。ここに私が私ができると思ったことのアイデアをちょっとだけ与えるためにタイプしたコードがあります。

void InjectionDialog::setData(InjectionData &setDataStruct) 
    { 
     /*The following setData functions assists in creating a new instance of 
      the Injection dialog with whatever values are passed to setDataStruct*/ 
     QString str;//created str to make datatype conversion 
     ui->lineEditFluidVelocity->setText(str.setNum(setDataStruct.lineEditFluidVelocity)); 
     ui->lineEditFluidMassFlow->setText(str.setNum(setDataStruct.lineEditFluidMassFlow)); 
    ui->lineEditFluidArea->setText(str.setNum(setDataStruct.lineEditFluidArea)); 
     ui->lineEditFluidTemperature->setText(str.setNum(setDataStruct.lineEditFluidTemperture)); 
     ui->lineEditFluidPressure->setText(str.setNum(setDataStruct.lineEditPressure)); 
     ui->lineEditParticleManual->setText(str.setNum(setDataStruct.lineEditManualParticlesPerCell)); 
     ui->lineEditParticleVelocity->setText(str.setNum(setDataStruct.lineEditParitcleVelocity)); 
     ui->lineEditParticleMassFlow->setText(str.setNum(setDataStruct.lineEditParticleMassFlow)); 
     ui->lineEditParticleArea->setText(str.setNum(setDataStruct.lineEditParticleArea)); 
     ui->lineEditParticleTemperature->setText(str.setNum(setDataStruct.lineEditParticleTemperture)); 
     ui->tableWidgetInjectionLocations //this is where I got stuck 
} 

私はQTreeView列を委譲することによって項目を設定するためのオプションを持っていることを知っているが、私は編集することができるようにするには、これらのフィールドを必要とします。私はQTableWidgetを処理するにあたって、このすべてが間違っている可能性があります。もしそうなら、私はこのウィジェットを適切に処理するためのアドバイスを感謝します。

+0

QTableWidgetItem * newItem =新しいQTableWidgetItem(TR( "%1")のarg( (行+ 1)*(カラム+ 1))。)読んでくれてありがとう。 tableWidget-> setItem(row、column、newItem); この文書のこのコードはあなたのためにできないものはありますか? – ksming

答えて

0

QTableWidgetItemによるいくつかの調査と試行錯誤の後、私が探していたものが見つかりました。前に述べたように、QTableWidgetを使用して各セルを特定のデータに設定する方法を提供するためにsetData関数を書く必要がありました。 QTableWidgetはに各項目を設定するためにsetItemを使用します。これを知って私はちょうど目的を記入した。ここに私がしたことがあります。これは私のメインコードの直後です。

for(int i=0; i<setDataStruct.qTableWidegetlocations.size(); i++) 
      { 
       QTableWidgetItem *qTableWidgetItemInjectionName = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsInjectionName); 
       ui->tableWidgetInjectionLocations->setItem(i,0, qTableWidgetItemInjectionName); 
       QTableWidgetItem *qTableWidgetItemInjectionOnOff= new QTableWidgetItem((setDataStruct.qTableWidegetlocations[i].locationsInjectionOnOff)); 
       ui->tableWidgetInjectionLocations->setItem(i,1, qTableWidgetItemInjectionOnOff); 
       QTableWidgetItem *qTableWidgetItemInjectionX = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsX); 
       ui->tableWidgetInjectionLocations->setItem(i,2, qTableWidgetItemInjectionX); 
       QTableWidgetItem *qTableWidgetItemInjectionY = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsY); 
       ui->tableWidgetInjectionLocations->setItem(i,3, qTableWidgetItemInjectionY); 
       QTableWidgetItem *qTableWidgetItemInjectionZ = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsZ); 
       ui->tableWidgetInjectionLocations->setItem(i,4,qTableWidgetItemInjectionZ); 
       QTableWidgetItem *qTableWidgetItemInjectionnx = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsnx); 
       ui->tableWidgetInjectionLocations->setItem(i,5,qTableWidgetItemInjectionnx); 
       QTableWidgetItem *qTableWidgetItemInjectionny = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsny); 
       ui->tableWidgetInjectionLocations->setItem(i,6,qTableWidgetItemInjectionny); 
       QTableWidgetItem *qTableWidgetItemInjectionnz = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsnz); 
       ui->tableWidgetInjectionLocations->setItem(i,7,qTableWidgetItemInjectionnz); 
       QTableWidgetItem *qTableWidgetItemInjectionTemperature = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsTemperature); 
       ui->tableWidgetInjectionLocations->setItem(i,8,qTableWidgetItemInjectionTemperature); 
       QTableWidgetItem *qTableWidgetItemInjectionWeight = new QTableWidgetItem(setDataStruct.qTableWidegetlocations[i].locationsWeight); 
     } 

関連する問題