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

Compare with Current View Page History

« Previous Version 16 Next »

Simppeli QTimer esimerkki

Esimerkki, jossa on tehty Dialog perustainen sovellus ja liitetty siihen QTimer muuttuja. QTimer on kohtuullisen helposti käytettävä ajastin. Esimerkiksi timer.start(1000); komennolla ajatimen saa käyntiin ja timer.stop(); komennolla se pysähtyy.

#include "dialog.h"
#include "ui_dialog.h"

//dialogin muodostin eli funktio, joka "ajetaan" ohjelman käynnistyessä
//tänne on hyvä laittaa kaikki muuttujien alustukset, koska muuten ne saavat mielivaltaisia arvoja ja ohjelma ei käynnisty
Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //liitetään ajastimen timeout slotiin update eli aina kun ajastin on käynyt loppuun se lähettää timeout signaalin ja alkaa laskea taas alusta
    // nyt update() slotia kutsutaan aina kun tapahtuu timeout
    connect(&timer, SIGNAL(timeout()), this, SLOT(update()));
    //startin voisi tietysti laittaa esimerkiksi napuin taakse, jolloin ajatin ei "pyörisi" kuin haluttaessa
    timer.start(1000);//käynnisetään ajastin, joka lähettää timeoutin sekunnin välein
    Arvo=0;//nollataan muuttuja, johon lasketaan timeoutien lukumäärää
}

******************

void Dialog::update()//tätä kutsutaan aina kun tapahtuu timeout eli kun startissa määrätty aika millisekunteja on kulunut
{
   Arvo++;
   ui->editLine->setValue(Arvo);
}

Otsikkotiedosto

#ifndef DIALOG_H
#define DIALOG_H
#include <QtGui/QDialog>
#include <QTimer> //tämä pitää olla mukana, jotta ajastinta voidaan käyttää

namespace Ui
{
    class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT
public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private slots:
    void update();
private:
    Ui::Dialog *ui;
    QTimer timer;//ajastimen esittely jäsenmuuttujana
    int Arvo;
};
#endif // DIALOG_H

  • No labels
You must log in to comment.