Harjoituksessa tutkitaan kuinka sovellukseen lisätään uusi Form ja kuinka tietoa voidaan välittää formilta toiselle.
Uusi ikkuna voidaan avata metodeilla show ja exec. Näiden toiminta on seuraava
#include "secondform.h" #include "thirdform.h"
SecondForm *sf=new SecondForm(this); sf->show();Edellä SecondFormille annetaan argumenttina this, joka siis viittaa MainWindow luokan olioon. Tämän ansiosta oliota sf ei tarvitse tuhota, vaan se tuhoutuu automaattisesti, kun MainWindow olio tuhoutuu.
Huom! SecondForm-olio tuhoutuu vasta, kun MainWindow olio tuhotaan. Jos MainWindow:ta ei suljeta, niin joka kerta kun klikataan "Avaa SecondForm" luodaan uusi SecondForm olio. Tällöin kannattaa laittaa SecondForm olio tuhoutumaan, kun ikkuna suljetaan. Se voidaan tehdä seuraavalla koodilla:
SecondForm *sf=new SecondForm(this); sf->setAttribute(Qt::WA_DeleteOnClose); // Tuhoaa objektin kun ikkuna suljetaan sf->show();
explicit SecondForm(QString name, QWidget *parent = nullptr);Sanan SecondForm päällä Refactor->Apply Function Signature Changes (jolloin muutos tehdään myös cpp-tiedostoon)
ui->labelInfo->setText(name);
SecondForm *objectSecondForm=new SecondForm("Jussi",this);
objectSecondForm->show();
void ThirdForm::setNameFromMain(const QString &newNameFromMain)
{
nameFromMain = newNameFromMain;
ui->labelInfo->setText(nameFromMain);
}
ThirdForm *objectThirdForm=new ThirdForm(this);
objectThirdForm->setNameFromMain("Maija");
objectThirdForm->show();
Jos sinun pitäisi saada uudesta formista saatu data näkymään alkuperäisessä formissa, voit käyttää signal-slot systeemiä tai singleton-luokkaa