Спасибо за ваш совет, но я нашел другое решение. Я написал свой собственный класс my_timer, который просто использует внутренний таймер, который истекает каждую секунду. В моем главном окне я связываю это время с функцией обновления дисплея для пользователя.
my_timer.cpp:
#include "my_timer.hpp"
my_timer::my_timer( QWidget *parent ) : QTimer( parent )
{
notifier = new QTimer;
}
my_timer::~my_timer()
{
//...
}
QTimer* my_timer::get_notifier()
{
return notifier;
}
void my_timer::start( int msec )
{
QTimer::start( msec );
notifier->start( 1000 );
}
void my_timer::stop()
{
QTimer::stop();
notifier->stop();
}
И в моем main_window.cpp:
void main_window::setup_connects()
{
// ...
connect( m_timer->get_notifier(), SIGNAL(timeout()), this, SLOT(on_update_label()) );
// ...
}
void main_window::on_update_label()
{
if( m_timer->isActive() )
{
if( remaining_secs > 1 )
{
remaining_secs--;
}
else
{
remaining_secs = spin_box->value();
}
update_label();
}
}
void main_window::update_label()
{
m_time_string = QString( "Remaining time until next execution: %1" ).arg( remaining_secs );
m_time_label->setText( m_time_string );
}