Grazie per il vostro consiglio, ma ho trovato un'altra soluzione. Ho scritto la mia classe my_timer che ha semplicemente il timer secondario interno che scade ogni secondo. Nella mia finestra principale collego questo timeout con una funzione che aggiorna il display per l'utente.
Il 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();
}
E nella mia 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);
}
C'è [REMAININGTIME] (http://qt-project.org/doc/qt-5.0/qtcore/qtimer.html#remainingTime-prop) property in Qt5 –