2012-01-10 3 views
0

저는 학생 프로그래머이며 회사의 Qt에서 GUI를 작성하고 있습니다. 기본적으로 멤버 함수 SetData를 작성하여 Ui 요소와 멤버 변수 사이의 중개자 역할을합니다. 이 Ui에서는 QTableWidge를 사용하고 있습니다. 각 열을 변수로 설정하는 방법을 정확하게 찾을 수없는 것 같습니다.주소 지정 QTableWidget Colums

예를 들어, QTableWidget에 열 이름이 있고 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"), 인수 ( (로우 + 1) * (열 + 1)).); tableWidget-> setItem (row, column, newItem); 해당 문서의이 코드 조각이 당신을 위해 할 수없는 것이 있습니까? – ksming

답변

0

QTableWidgetItem을 통한 조사 및 시행 착오를 거쳐야합니다. 나는 내가 찾고있는 것을 발견했다. 앞서 말했듯이 QTableWidget을 사용하여 각 셀을 특정 데이터로 설정하는 방법을 제공하기 위해 setData 함수를 작성해야했습니다. QTableWidgetsetItem을 사용하여 각 항목을 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); 
     } 

감사