Sur cette page

Application client de synchronisation horaire

Un client qui détient une réplique d'un objet « time » provenant d'un serveur et affiche l'heure dans une horloge.

L'application client « Time » ouvre une fenêtre bleue contenant un message. Lorsque vous cliquez une fois, elle affiche une horloge. Lorsque vous cliquez à nouveau, elle affiche deux horloges, puis le processus se répète. L'horloge est définie dans Clock.qml et utilise le type QML « Time », implémenté en C++, pour régler l'heure de l'horloge à partir de l'heure du serveur.

Fenêtre d'application affichant deux horloges analogiques synchronisées

Avant d’exécuter l’application cliente Time

Pour exécuter cet exemple, l’application « Time Server » doit déjà être en cours d’exécution sur le même hôte que cette application. Elle configure un serveur de registre et héberge une instance d’une sous-classe de la classe ` MinuteTimerSimpleSource `. Si elle n’est pas en cours d’exécution, un message d’erreur s’affichera dans la fenêtre.

Définition d’objets distants à l’aide d’un fichier REP

Le fichier REP « timemodel.rep », situé dans le répertoire parent de cette application, sert à générer les fichiers d’en-tête utilisés par les deux applications. Pour cette application, le fichier « rep_timemodel_replica.h » généré définit la classe ` MinuteTimerReplica`, la réplique de la classe ` MinuteTimer`, ainsi que d’autres classes associées.

La classe TimeModel

La classe TimeModel, définie dans les fichiers plugin.h et plugin.cpp, implémente le type QML Time. Elle contacte le serveur de registre sur localhost à l’aide de l’URL « local:registry », récupère une réplique, MinuteTimerReplica, et s’abonne à ses signaux. Les propriétés sont mises à jour automatiquement.

Les types QML

Le QML défini dans « Clock.qml » dessine une montre à l’aide des propriétés hours et minutes.

L’application ouvre une fenêtre contenant le contenu « plugins.qml ». Elle alterne l’affichage de différents contenus à l’aide d’un Loader, passant à chaque clic de « plugins0.qml » à « plugins1.qml », puis à « plugins2.qml ».

Alors que « plugins0.qml » affiche un écran bleu avec un message, le type QML personnalisé « Clock » est utilisé dans « plugins1.qml », les propriétés « hours » et « minutes » étant définies sur les propriétés « hour » et « minute » de « Time ». Le fichier « plugins2.qml » est similaire mais affiche deux horloges.

import QtRemoteObjects
import QtQuick
import TimeExample // import types from the plugin

Rectangle {
    width: 200
    height: 400
    color: "blue"
    Clock {
        id: clock1
        anchors.top: parent.top

        Time { // this class is defined in C++
            id: time
            node: node
        }

        Node {
            id: node
            registryUrl: "local:registry"
        }

        hours: time.hour
        minutes: time.minute
        valid: time.state == Time.Valid

    }
}

Exemple de projet sur code.qt.io

Voir aussi Application de serveur de temps.

© 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.