Domanda

Sono un programmatore studente e sono stati la costruzione di una GUI in Qt per la mia azienda. Sto scrivendo una funzione membro SetData di agire fondamentalmente da intermediario tra i miei elementi dell'interfaccia utente e le variabili membro. In questo particolare Ui Sto usando un QTableWidge. Io non riesco a scoprire esattamente come impostare ogni colonna a una variabile.

Per esempio, se ho la colonna Nome nella mia QTableWidget, e il nome è la prima colonna non posso accedervi utilizzando i parametri array tradizionali. Il documentazione da Qt è davvero hazey su come affrontare questo .. potrebbe anche essere che io sono ancora troppo amatoriale per capire come utilizzare le funzioni membro della classe per ottenere i risultati che voglio qui.

Per chiarire che sto cercando di definire un tipo di dati per un'intera colonna. Per esempio la mia prima colonna; Nome, sarebbe una variabile che ho creato, che è un tipo di dati QString. e SetData passerebbe a casualmente una QVector o QList. Ecco il codice che ho digitato in modo lontano per un po dare un'idea di quello che ho pensato che avrei potuto fare.

 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
}

So che QTreeView ha la possibilità di voci impostate delegando colonne, ma ho bisogno di questi campi per essere in grado di essere modificato. Potrei andare su questo tutto sbagliato nella gestione di mia QTableWidget; in caso affermativo Apprezzo qualsiasi consiglio su come gestire in modo appropriato questo Widget.

È stato utile?

Soluzione

Dopo alcune ricerche e tentativi ed errori attraverso QTableWidgetItem; Ho trovato quello che cercavo. Come ho detto in precedenza avevo bisogno di scrivere una funzione setData per fornire un modo per impostare ogni cella ad alcuni dati specificati utilizzando QTableWidget. QTableWidget usi setItem per impostare ogni elemento per un QTableWidgetItem . Sapendo questo ho appena compilato lo scopo. Ecco quello che ho fatto; Questo è subito dopo il mio codice principale.

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

Grazie per la lettura

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top