Tässä harjoituksessa tutkitaan kuinka luodaan oliolista (QList) ja esitetään tuon listan olioiden data QtableView:ssä. Ja lisäksi kuinka QtableView:stä saadaan valitun solun sisältö. Tarkoituksena on saada aikaan kuva1:n mukainen sovellus.
QList<Student> studentList; void addStudents();
Student obj; obj.setFname("Matti"); obj.setLname("Mainio"); studentList.append(obj); obj.setFname("Teppo"); obj.setLname("Testi"); studentList.append(obj); obj.setFname("Jussi"); obj.setLname("Juonio"); studentList.append(obj);
QStandardItemModel *table_model = new QStandardItemModel(studentList.size(),2); table_model->setHeaderData(0, Qt::Horizontal, QObject::tr("Etunimi")); table_model->setHeaderData(1, Qt::Horizontal, QObject::tr("Sukunimi")); for (int row = 0; row < studentList.size(); ++row) { QStandardItem *fName = new QStandardItem(studentList[row].getFname()); table_model->setItem(row, 0, fName); QStandardItem *lName = new QStandardItem(studentList[row].getLname()); table_model->setItem(row, 1, lName); } ui->tableStudents->setModel(table_model);Huom! Jos edellä muuttujien tyyppi ei ole QString on ne muutettava esim. näin:
QStandardItem *age = new QStandardItem(QString::number(studentList[row].getAge()));
QVariant value=index.sibling(index.row(),index.column()).data(); QString selected_value=QVariant(value).toString(); ui->labelResult->setText("Valittu "+selected_value);