Results 1 to 2 of 2

Thread: Aid on QStateMachine

  1. #1
    Join Date
    Apr 2010
    Location
    Italia
    Posts
    149
    Thanked 2 Times in 2 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Aid on QStateMachine

    file mainwindow.cpp:
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDebug>
    #include <QVBoxLayout>

    #include "macchinat.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    QPushButton *pulsanteEsci = new QPushButton("Premi per uscire");
    QWidget *widget = new QWidget(this);
    QVBoxLayout *btnLayout = new QVBoxLayout;
    btnLayout->addWidget(pulsanteEsci);
    widget->setLayout(btnLayout);
    setCentralWidget(widget);
    MacchinaT myMacchina(*pulsanteEsci, this);
    }

    file macchinat.h:
    #include <QObject>
    #include <QtGui/QPushButton>
    #include <QtCore/QStateMachine>
    #include <QtCore/QFinalState>

    class MacchinaT : public QObject
    {
    Q_OBJECT

    public:
    MacchinaT(QPushButton &btn1, QObject *parent = 0);
    QState *siniz;
    QState *s1;
    QFinalState *sfinal;

    public slots:
    void vaiFrmLogin();
    void esci();

    private:
    QPushButton *F1;
    };

    file macchinat.cpp:
    #include "macchinat.h"
    #include <QDebug>

    MacchinaT::MacchinaT(QPushButton &btn1, QObject *parent) :
    QObject(parent)
    {
    F1 = &btn1;

    QStateMachine *macchina = new QStateMachine(parent);

    // crea la Macchina degli Stati e inizializzo gli Stati
    siniz = new QState();
    s1 = new QState();
    sfinal = new QFinalState();

    F1->setDisabled(false);

    //--------- proprieta' F1 nei vari stati ---------
    siniz->assignProperty(F1, "text", "siniz");
    siniz->addTransition(F1, SIGNAL(clicked()), s1);
    s1->assignProperty(F1, "text", "s1");
    s1->addTransition(F1, SIGNAL(clicked()), sfinal);

    // aggiunge gli stati alla Macchina degli Stati
    macchina->addState(siniz);
    macchina->addState(s1);
    macchina->addState(sfinal);

    connect(s1, SIGNAL(entered()), this, SLOT(vaiFrmLogin()));
    connect(macchina, SIGNAL(finished()), this, SLOT(esci()));

    // setta lo stato iniziale della Macchina degli Stati e avviala
    macchina->setInitialState(siniz);
    macchina->start();
    }

    void MacchinaT::vaiFrmLogin()
    {
    qDebug() << "vaiFrmLogin()";
    }

    void MacchinaT::esci()
    {
    qDebug() << "esci()";
    }

    It does not execute the connect !?! why?

  2. #2
    Join Date
    Apr 2010
    Location
    Italia
    Posts
    149
    Thanked 2 Times in 2 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Aid on QStateMachine

    The problem is SIGNAL(entered()) for s1. Why?

Similar Threads

  1. Finding the current state of a QStateMachine
    By pherthyl in forum Qt Programming
    Replies: 3
    Last Post: 18th July 2012, 15:14
  2. QStateMachine
    By piotr.dobrogost in forum Qt Programming
    Replies: 3
    Last Post: 6th December 2009, 08:17
  3. QStateMachine, not getting entered()
    By jimiq in forum Qt Programming
    Replies: 10
    Last Post: 19th November 2009, 10:17
  4. QStateMachine and signals
    By rossm in forum Qt Programming
    Replies: 2
    Last Post: 26th March 2009, 10:43

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.