Timer в отдельном потоке. Как завершить?

312
27 августа 2017, 04:58

Qt5.7 MSVC2015_64/GCC 5.4 GUI приложение. Я хочу чтобы таймер отрабатывал в отдельном потоке.

В классе главной формы:

m_tmr = new Timer(1000); //класс поток для таймера
m_tmr->start();
connect(m_tmr, &Timer::sg_TimOut, this, &MainForm::updateByTimer, Qt::DirectConnection);

Сам таймер:

Timer::Timer(int interval) : 
m_interval(interval),
m_startFlag(true)
{
}
Timer::~Timer()
{
    //delete timer;
    //quit();
}        
void Timer::run()
{
    QTimer timer;
    connect(&timer, &QTimer::timeout, this, &Timer::sg_TimOut);
    connect(this, &Timer::timerStoped, &timer, &QTimer::stop);        
    if (m_startFlag)
        timer.start(m_interval);
    exec();
    //mit finished(this->thread());
}
void Timer::startTimer(int interval)
{
    m_interval = interval;
    m_startFlag = true;
    emit timerStarted(interval);
}
void Timer::stop()
{
    m_startFlag = false;
    emit timerStoped();
}
void Timer::quit()
{
    stop();
    QThread::quit();
}

на выходе программа выдает следующее?

QThread: Destroyed while thread is still running

Как это выйти из потока и удалить таймер?

READ ALSO
Stack overflow в рекурсивной функции(c++)

Stack overflow в рекурсивной функции(c++)

Пишу сапёра на с++Для хранения клеток использую двумерный динамический массив(позже планирую пользовательский ввод размера поля)

458
Массив из булевых переменных

Массив из булевых переменных

Я хочу сделать так, что бы некоторый набор элементов в массиве при запуске имел значение trueВ дальнейшем, когда пользователь занимает какую...

454
Чтение .dwg файлов в проекте на c++/c#

Чтение .dwg файлов в проекте на c++/c#

Ребята, приветствуюСтолкнулся с такой проблемой: есть

305
Error в ajax запросе и статус 200

Error в ajax запросе и статус 200

В моей функции выполняется ajax запрос:

302