Zeitserver-Anwendung
Ein Server, der ein Zeitobjekt mit den angeschlossenen Clients teilt.
Die Zeitserver-Anwendung instanziiert ein MinuteTimer
Objekt und teilt es mit allen angeschlossenen Zeit-Client-Anwendungen.
Definition von Remote-Objekten mit einer REP-Datei
Die REP-Datei "timemodel.rep" im übergeordneten Verzeichnis des Beispiels wird verwendet, um die von beiden Anwendungen verwendeten Header-Dateien zu erzeugen. Für diese Anwendung definiert die generierte Datei "rep_timemodel_source.h" MinuteTimerSource
, die Klasse, die als Unterklasse für die Implementierung von MinuteTimer
dient, und andere verwandte Klassen.
Die TimeModel-Klasse
Die Klasse TimeModel
in timemodel.h und timemodel.cpp implementiert das gemeinsam zu nutzende Zeitobjekt. Sie verwendet eine QBasicTimer
, um sicherzustellen, dass die Zeit durch den Aufruf der Mitgliedsfunktion timerEvent
aktualisiert wird.
void MinuteTimer::timerEvent(QTimerEvent *) { QTime now = QTime::currentTime(); if (now.second() == 59 && now.minute() == time.minute() && now.hour() == time.hour()) { // gerade verpasste Zeitüberschreitung, erzwingen, zusätzliche 0,5 Sekunden wartentime = 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(); }
Gemeinsame Nutzung einer Instanz von TimeModel
Es werden Instanzen von QRemoteObjectHost
und QRemoteObjectRegistryHost
erstellt, um ein Objekt zu hosten und eine Registry zu haben, um es zu finden. Anschließend wird ein MinuteTimer
Objekt erstellt, das mit Hilfe der enableRemoting
Memberfunktion des QRemoteObjectRegistryHost
Objekts gemeinsam genutzt wird.
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(); }
Siehe auch Time Client Application.
© 2025 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.