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

Définition d'objets distants à l'aide d'un fichier REP
Le fichier REP "timemodel.rep" dans le répertoire parent de l'exemple est utilisé pour 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, et d'autres classes connexes.
La classe TimeModel
La classe TimeModel dans timemodel.h et timemodel.cpp implémente l'objet temps à partager. Elle utilise QBasicTimer pour garantir la mise à jour de l'heure 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()) { // vient de manquer le tic-tac du temps, forcez-le, attendez 0,5 secondes supplémentairestime = 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 pour le trouver. 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 aussi Application client temporelle.
© 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.