Thanks for your advice, but I found another solution. I wrote my own class my_timer which simply has it's on internal secondary timer who times out every second. In my main window I connect this timeout with a function with updates the display for the user.
The 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();
}
And in my 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 );
}