寻址QTableWidget Colums

问题描述:

我是一名学生程序员,并且在Qt中为我的公司构建了一个GUI。我正在写一个成员函数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时遇到这个问题;如果是这样,我很欣赏任何有关如何正确处理这个Widget的建议。

+0

QTableWidgetItem *的newitem =新QTableWidgetItem(TR( “%1”)的Arg( (行+ 1)*(列+ 1))); tableWidget-> setItem(row,column,newItem); 这段文件中的这段代码不能为你做什么吗? – ksming 2012-01-11 03:45:16

经过QTableWidgetItem的一些研究和试验和错误;我找到了我正在寻找的东西。正如我前面所说,我需要编写一个setData函数来提供一种方法,使用QTableWidget将每个单元设置为某些指定的数据。 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); 
     } 

感谢阅读