0

私は学生プログラマーであり、会社のQtでGUIを構築しています。基本的に、Ui要素とメンバー変数の間の仲介役として機能するメンバー関数SetDataを作成しています。この特定のUIでは、QTableWidgeを使用しています。各列を変数に設定する方法を正確に理解できないようです。

たとえば、QTableWidgetに列Nameがあり、Nameが最初の列である場合、従来の配列パラメーターを使用してそれにアクセスすることはできません。Qtのドキュメントは、これに対処する方法について非常に曖昧です。また、クラスのメンバー関数を使用してここで必要な結果を達成する方法を理解するには、まだアマチュアすぎる可能性があります。

明確にするために、列全体のデータ型を定義しようとしています。たとえば、私の最初の列。名前は、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の処理でこれがすべて間違っている可能性があります。もしそうなら、このウィジェットを適切に処理する方法についてアドバイスをいただければ幸いです。

4

1 に答える 1

0

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

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

読んでくれてありがとう

于 2012-01-12T01:10:48.773 に答える