venerdì 29 marzo 2013

QTimer in Qt

Questo componente non visuale permette di gestire eventi a tempi predefiniti

La sintassi e' piuttosto semplice: si crea l'oggetto e si associa una funzione che viene richiamata ogni volta che l'oggetto genera un evento


Nell'esempio seguente gli eventi vengono generati ogni secondo
------------------------------------------

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void TimerEvent();

private:
    Ui::MainWindow *ui;
    QTimer timer;
    unsigned contatore;
};

#endif // MAINWINDOW_H
------------------------------------------

------------------------------------------
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>

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

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    contatore = 0;
    connect(&timer, SIGNAL(timeout()), this, SLOT(TimerEvent()));
    this->timer.start(1000);
}


void MainWindow::TimerEvent()
{
    contatore++;
    QString str;
    str.append(QString("%1").arg(contatore));
    ui->pushButton->setText(str);
    qDebug()<< contatore;
}
------------------------------------------