Исправления на вскидку
Класс таймер:
C++ (Qt)
#include "Timer.h"
Timer::Timer( int interval )
: m_interval( interval )
, m_start_flag()
{
}
Timer::~Timer()
{
}
void Timer::run()
{
QTimer timer;
connect(&timer, SIGNAL(timeout()), this, SIGNAL(sg_TimOut()));
connect( this, SIGNAL(timerStarted(int)), &timer, SLOT(start(int)));
connect( this, SIGNAL(timerStoped()), &timer, SLOT(stop()));
if ( m_start_flag )
timer.start( m_interval );
exec();
}
void Timer::start( int interval )
{
m_interval = interval;
m_start_flag = true;
emit timerStarted( interval );
}
void Timer::stop()
{
m_start_flag = false;
emit timerStoped();
}
На главной форме:
C++ (Qt)
MainForm::MainForm():
{
//...
m_tmr = new Timer(); //класс поток для таймера
m_tmr->start();
connect(m_tmr, &Timer::sg_TimOut, this, &MainForm::updateByTimer );
C++ (Qt)
MainForm::~MainForm()
{
//delete m_tmr;
m_tmr->quit();
delete m_tmr;
Нельзя напрямую вызывать методы экземпляра timer внутри класса Timer, так как this и timer связаны с разными потоками.