时间客户端应用程序

一个客户端从服务器持有时间对象的一个副本,并在钟表中显示时间的客户端。

时间客户端应用程序打开一个带有消息的蓝色窗口。点击一次,显示钟表。再次点击,显示两个钟表,然后重复。钟表定义在Clock.qml中,并使用C++中实现的Time QML类型来使用服务器上的时间设置钟表的时间。

在运行时间客户端应用程序之前

要运行此示例,必须在相同主机上已运行时间服务器应用程序。它设置注册服务器,并托管MinuteTimerSimpleSource类的子类的实例。如果没有运行,窗口中将出现错误消息。

使用REP文件定义远程对象

此应用程序父目录中的REP文件"timemodel.rep"用于生成两个应用程序使用的头文件。对于此应用程序,生成的"rep_timemodel_replica.h"文件定义了MinuteTimerReplica,它是MinuteTimer的副本,以及其他相关类。

TimeModel

TimeModel类在plugin.h和plugin.cpp中实现,它实现了QML类型Time。它使用URL"local:registry"在本地主机上联系注册服务器,获取副本MinuteTimerReplica,并连接到其信号。属性将自动更新。

QML类型

“Clock.qml”中的QML使用小时和分钟属性绘制手表。

应用程序打开内容为"plugins.qml"的窗口。它使用Loader在显示不同内容之间切换,每个点击在"plugins0.qml"、"plugins1.qml"和"plugins2.qml"之间循环。

当"plugins0.qml"显示带有消息的蓝色屏幕时,自定义QML类型Clock在"plugins1.qml"中使用,小时和分钟属性设置为Time的小时和分钟属性。"plugins2.qml"文件类似,但显示两个钟表。

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

    }
}

示例项目 @ code.qt.io

另请参阅时间服务器应用程序

© 2024 Qt公司有限公司。本文档中的文档贡献均为各自所有者的版权。提供的文档根据开源软件基金会的规定,在 GNU自由文档许可证版本1.3 的条款下获得许可。Qt及其相关标志是Qt公司在芬兰及全球其他国家的商标。商标的所有其他商标均为其各自所有者的财产。