Application de serveur de temps
Un serveur qui partage un objet de temps avec les clients connectés.
L'application serveur de temps instancie un objet ` MinuteTimer ` et le partage avec toutes les applications clientes de temps connectées.

Définition d’objets distants à l’aide d’un fichier REP
Le fichier REP « timemodel.rep », situé dans le répertoire parent de l'exemple, sert à générer les fichiers d'en-tête utilisés par les deux applications. Pour cette application, le fichier « rep_timemodel_source.h » généré définit MinuteTimerSource, la classe à sous-classer pour l'implémentation de MinuteTimer, ainsi que d'autres classes associées.
La classe TimeModel
La classe ` TimeModel `, définie dans les fichiers `timemodel.h` et `timemodel.cpp`, implémente l’objet temporel à partager. Elle utilise une classe ` QBasicTimer ` pour garantir que l’heure est mise à jour en appelant la fonction membre ` timerEvent `.
void MinuteTimer::timerEvent(QTimerEvent*)
{
QTime now = QTime::currentTime();
if (now.second()== 59&& now.minute()== time.minute()&& now.hour()== time.hour()) {
// le passage à la seconde suivante vient d’être manqué de peu, forçons-le, attendons 0,5 seconde supplémentaire
time = time.addSecs(60);
timer.start(60500, this);
} else {
time = now;
timer.start(60000- time.second()* 1000, this);
}
qDebug()<<"Time"<<time;
setHour(time.hour());
setMinute(time.minute());
emit timeChanged();
}Partage d’une instance de TimeModel
Des instances de ` QRemoteObjectHost ` et de ` QRemoteObjectRegistryHost ` sont créées pour héberger un objet et disposer d’un registre permettant de le retrouver. Un objet ` MinuteTimer ` est ensuite créé et partagé à l’aide de la fonction membre ` enableRemoting ` de l’objet ` QRemoteObjectRegistryHost `.
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_QNX)
signal(SIGINT, &unix_handler);
#elif defined(Q_OS_WIN32)
SetConsoleCtrlHandler((PHANDLER_ROUTINE)WinHandler, TRUE);
#endif
QRemoteObjectHost node(QUrl(QStringLiteral("local:replica")),QUrl(QStringLiteral("local:registry")));
QRemoteObjectRegistryHost node2(QUrl(QStringLiteral("local:registry")));
MinuteTimer timer;
node2.enableRemoting(&timer);
Q_UNUSED(timer)
return app.exec();
}Voir également l’application client Time.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.