Giriş
Şu satırı dahil
ederiz.
#include <QTimer>
Timer sınıfı yaratıldığı thread tarafından başlatılabilir ve durdurulabilir. Yoksa şöyle bir hata
alırız.
QObject::~QObject: Timers cannot be stopped from another thread
Handler Metod
Normalde bu metodun parametre almayan bir imzaya sahip olması gerekir.
Örnek
Eğer parametre geçmek istersek şöyle
yaparız. Buradar SLOT(timeout()) yerine direkt &QTimer::timeout adresi geçiliyor. Bence bu şekilde kullanmamak lazım.
int interval = 500;
int data = 42;
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, [data] {
/* Implement your logic here */
});
isActive metodu
Şöyle
yaparız.
if(timer.isActive()){
timer.stop();
}
setSingleShot metodu
Şöyle
yaparız.
m_pTimer->setSingleShot(true);
timeout Signal
Şöyle
yaparız.
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(perform()));
void MyTask::perform()
{
...
}
setInterval metdou
Şöyle
yaparız.
timer.setInterval(3000);
singleShot metodu - static
Şöyle
yaparız.
QTimer::singleShot(10, [=](){
// do some stuff
});
start metodu
MainWindow sınıfında şöyle
yaparız.
QTimer *m_pTimer = new QTimer(this);
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(updateProgress()));
m_pTimer->start(40);
Handler kodu
şöyledir
void MainWindow::updateProgress()
{
...
}
stop metodu
Şöyle
yaparız.
m_pTimer->stop();