#include "dialog.h"
#include "ui_dialog.h"
#include <QtGui> //sisältää tikonemäärittelyt
/*
Tee tämä luokka wizardilla ÄLÄ KOPIOI, lisää dialogiin nappi ja nimeä se button
*/
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
// tehdään tilakone
QStateMachine *machine = new QStateMachine(this);
//tehdään tila
QState *tila1 = new QState();
//lisätään tilalle ominaisuus
tila1->assignProperty(ui->button, "text", trUtf8("Ulkona"));
//tehdään toinen tila
QState *tila2 = new QState();
//lisätään tällekin tilalle ominaisuus
tila2->assignProperty(ui->button, "text", trUtf8("Sisällä"));//käytetään trUtf8 funktiota jotta skandit näkyy
//lisätään siirtymä=transition, joka tapahtuu kun kursori viedään napin päälle
QEventTransition *enterTransition = new QEventTransition(ui->button, QEvent::Enter);
//määrätään tila johon siirrytään kun hiiri on viety napin päälle
enterTransition->setTargetState(tila2);
//määrätään mistä tilasta transiitio on mahdollinen
tila1->addTransition(enterTransition);
//ja sama juttu toiseen suuntaan
QEventTransition *leaveTransition = new QEventTransition(ui->button, QEvent::Leave);
leaveTransition->setTargetState(tila1);
tila2->addTransition(leaveTransition);
//tehdään vielä kolmas tila
QState *tila3 = new QState();
tila3->assignProperty(ui->button, "text", trUtf8("Nappia painetaan..."));
//tilasiirtymä napinpainosta
QEventTransition *pressTransition = new QEventTransition(ui->button, QEvent::MouseButtonPress);
pressTransition->setTargetState(tila3);
//kun hiiri on napin päällä, on nappia mahdollisuus painaa ja siirrytään tilaan 3
tila2->addTransition(pressTransition);
//tilasiirtymä napin vapautuksesta
QEventTransition *releaseTransition = new QEventTransition(ui->button, QEvent::MouseButtonRelease);
releaseTransition->setTargetState(tila2);
tila3->addTransition(releaseTransition);
//lisätään tilat tilakoneeseen
machine->addState(tila1);
machine->addState(tila2);
machine->addState(tila3);
//asetetaan tilakoneen alkutila
machine->setInitialState(tila1);
//käynnistetään tilakone
machine->start();
}
|