You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

#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);
    //tilna siirtymä 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();

}
  • No labels
You must log in to comment.