寻址QTableWidget列

时间:2012-01-10 22:21:56

标签: c++ qt input widget qtablewidget

我是一名学生程序员,并为我的公司在Qt中构建了一个GUI。我正在编写一个成员函数SetData,基本上充当我的Ui元素和成员变量之间的中介。在这个特殊的Ui我使用的是QTableWidge。我似乎无法确切地知道如何将每列设置为变量。

例如,如果我的QTableWidget中有列名,而Name是第一列,则无法使用传统的数组参数访问它。来自Qt的documentation对于如何解决这个问题非常讨厌..也可能是我仍然太业余,无法理解如何使用类的成员函数来实现我想要的结果。

澄清我正在尝试为整个列定义数据类型。比如我的第一栏; Name,将是我创建的一个变量,它是一个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时,我可能会犯这个错误;如果是这样,我感谢任何关于如何妥善处理这个小工具的建议。

1 个答案:

答案 0 :(得分:0)

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

感谢阅读