Merci pour votre conseil, mais j'ai trouvé une autre solution. J'ai écrit ma propre classe, my_timer, qui a simplement une minuterie secondaire interne qui expire toutes les secondes. Dans ma fenêtre principale je connecte ce timeout avec une fonction avec des mises à jour de l'affichage pour l'utilisateur.
Le 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();
}
Et dans mon 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);
}
Il est [remainingTime] (http://qt-project.org/doc/qt-5.0/qtcore/qtimer.html#remainingTime-prop) propriété dans Qt5 –